{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Tutorial2: PyTorch basics"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Outline"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "- Datasets\n",
    "- Models\n",
    "- Losses\n",
    "- Optimizers"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Official resources:\n",
    "* [Deep Learning with PyTorch: a 60 Minute Blitz](https://pytorch.org/tutorials/beginner/deep_learning_60min_blitz.html)\n",
    "* [PyTorch documentation](https://pytorch.org/docs/stable/index.html)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Here no details, mostly visualization, with linear regression."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Imports"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/home/antonio/anaconda3/envs/geometric_new/lib/python3.9/site-packages/tqdm/auto.py:22: TqdmWarning: IProgress not found. Please update jupyter and ipywidgets. See https://ipywidgets.readthedocs.io/en/stable/user_install.html\n",
      "  from .autonotebook import tqdm as notebook_tqdm\n"
     ]
    }
   ],
   "source": [
    "import numpy as np\n",
    "import torch\n",
    "import matplotlib.pyplot as plt\n",
    "from matplotlib import colors\n",
    "plt.rcParams.update({'font.size': 16})"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "tensor([0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.])"
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "x = torch.rand(20, 5)\n",
    "x\n",
    "((x.norm(dim=1) - 1).abs() < 1e-10).float()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Datasets"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### A raw dataset"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The data are obtained from the model \n",
    "$$\n",
    "x \\mapsto y:=Ax + b\n",
    "$$\n",
    "with $x\\in\\mathbb R^{input\\_dim}$ and $y\\in\\mathbb R^{output\\_dim}$."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "input_dim = 1\n",
    "output_dim = 1\n",
    "\n",
    "A = 2 * np.random.rand(output_dim, input_dim) - 1\n",
    "b = 2 * np.random.rand(output_dim) - 1\n",
    "\n",
    "true_model = lambda x: A @ x + b"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We get a training set by randomly sampling and noisy observations\n",
    "\\begin{align*}\n",
    "&x_i \\sim U([-1, 1])\\\\\n",
    "&y_i = A x_i + b + \\nu_i\n",
    "\\end{align*}"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "n_train = 1000\n",
    "noise_level = 0.04\n",
    "\n",
    "# Generate a random set of n_train samples\n",
    "X_train = np.random.rand(n_train, input_dim)\n",
    "y_train = np.array([true_model(x) for x in X_train])\n",
    "\n",
    "# Add some noise\n",
    "y_train += noise_level * np.random.standard_normal(size=y_train.shape)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "if input_dim == output_dim == 1:\n",
    "    fig = plt.figure()\n",
    "    fig.clf()\n",
    "    ax = fig.gca()\n",
    "    ax.plot(X_train, y_train, '.')\n",
    "    ax.grid(True)\n",
    "    ax.set_xlabel('X_train')\n",
    "    ax.set_ylabel('y_train')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### PyTorch `Dataset`"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [],
   "source": [
    "#%% Dataset to manage vector to vector data\n",
    "class VectorialDataset(torch.utils.data.Dataset):\n",
    "    def __init__(self, input_data, output_data):\n",
    "        super(VectorialDataset, self).__init__()\n",
    "        self.input_data = torch.tensor(input_data.astype('f'))\n",
    "        self.output_data = torch.tensor(output_data.astype('f'))\n",
    "        \n",
    "    def __len__(self):\n",
    "        return self.input_data.shape[0]\n",
    "    \n",
    "    def __getitem__(self, idx):\n",
    "        if torch.is_tensor(idx):\n",
    "            idx = idx.tolist()\n",
    "        sample = (self.input_data[idx, :], \n",
    "                  self.output_data[idx, :])  \n",
    "        return sample "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [],
   "source": [
    "training_set = VectorialDataset(input_data=X_train, output_data=y_train)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "1000"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "len(training_set)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(tensor([[0.2106],\n",
       "         [0.1984]]),\n",
       " tensor([[1.1438],\n",
       "         [1.0491]]))"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "training_set[10:12]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Here almost useless, but think about e.g. images."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### PyTorch `DataLoader`"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [],
   "source": [
    "batch_size = 120\n",
    "train_loader = torch.utils.data.DataLoader(training_set, \n",
    "                                           batch_size=batch_size, \n",
    "                                           shuffle=True)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The role of `batch_size`:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Batch n.  1: input size=torch.Size([120, 1]), output size=torch.Size([120, 1])\n",
      "Batch n.  2: input size=torch.Size([120, 1]), output size=torch.Size([120, 1])\n",
      "Batch n.  3: input size=torch.Size([120, 1]), output size=torch.Size([120, 1])\n",
      "Batch n.  4: input size=torch.Size([120, 1]), output size=torch.Size([120, 1])\n",
      "Batch n.  5: input size=torch.Size([120, 1]), output size=torch.Size([120, 1])\n",
      "Batch n.  6: input size=torch.Size([120, 1]), output size=torch.Size([120, 1])\n",
      "Batch n.  7: input size=torch.Size([120, 1]), output size=torch.Size([120, 1])\n",
      "Batch n.  8: input size=torch.Size([120, 1]), output size=torch.Size([120, 1])\n",
      "Batch n.  9: input size=torch.Size([40, 1]), output size=torch.Size([40, 1])\n"
     ]
    }
   ],
   "source": [
    "for idx, batch in enumerate(train_loader):\n",
    "    print('Batch n. %2d: input size=%s, output size=%s' % (idx+1, batch[0].shape, batch[1].shape))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "960"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "8 * 120"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The role of `shuffle`:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[2.05784788e-01, 4.36037987e-01, 6.01623714e-01],\n",
       "       [7.19817837e-01, 7.86145389e-01, 6.72215939e-01],\n",
       "       [6.09538035e-01, 7.84872293e-01, 7.33218729e-01],\n",
       "       [8.82615981e-01, 3.95612359e-01, 5.57048738e-01],\n",
       "       [3.43085796e-03, 1.70190156e-01, 7.24182546e-01],\n",
       "       [8.30641732e-02, 9.18918371e-01, 9.32161152e-01],\n",
       "       [6.35257739e-01, 4.30486172e-01, 6.49381876e-01],\n",
       "       [1.75627838e-01, 4.74885613e-01, 8.14921916e-01],\n",
       "       [1.82322421e-01, 6.92526758e-01, 8.47791076e-01],\n",
       "       [9.80213257e-01, 8.58902335e-01, 5.85259080e-01],\n",
       "       [2.10579174e-01, 4.70532626e-01, 6.51153088e-01],\n",
       "       [1.98352101e-01, 6.09538019e-01, 3.83458883e-01],\n",
       "       [1.54870878e-01, 6.58187032e-01, 7.16468036e-01],\n",
       "       [9.86925902e-02, 2.18983032e-02, 6.72925487e-02],\n",
       "       [2.76020335e-03, 1.91518009e-01, 9.92547750e-01],\n",
       "       [1.96776921e-01, 1.47700906e-01, 9.34993684e-01],\n",
       "       [8.41014066e-01, 9.04534996e-01, 3.88683110e-01],\n",
       "       [8.38633120e-01, 8.67086947e-01, 5.28809190e-01],\n",
       "       [6.29314369e-01, 2.12898821e-01, 1.59060284e-01],\n",
       "       [2.52780023e-01, 5.77984691e-01, 7.29978681e-01],\n",
       "       [1.62164371e-01, 8.26870143e-01, 4.44590062e-01],\n",
       "       [4.32703586e-01, 7.69994482e-02, 4.19021547e-01],\n",
       "       [3.63981726e-01, 8.00265789e-01, 5.29069543e-01],\n",
       "       [5.20398999e-01, 7.45757818e-01, 4.48726326e-01],\n",
       "       [5.64292038e-01, 3.83413434e-02, 1.10513814e-01],\n",
       "       [4.12084830e-01, 6.41538322e-01, 3.09741110e-01],\n",
       "       [4.52187477e-01, 1.72831982e-01, 8.72428954e-01],\n",
       "       [5.79446327e-01, 6.66961133e-01, 2.28947043e-01],\n",
       "       [7.48672537e-01, 2.41100535e-01, 1.73309043e-01],\n",
       "       [6.56886325e-01, 3.84653270e-01, 1.30731925e-01],\n",
       "       [8.87419519e-01, 6.22831732e-02, 6.90814331e-02],\n",
       "       [7.94419623e-02, 6.66619599e-01, 6.09000087e-01],\n",
       "       [8.79391817e-01, 2.02486947e-01, 3.40404093e-01],\n",
       "       [2.39905220e-01, 5.32373071e-01, 8.16653132e-01],\n",
       "       [3.99606868e-02, 1.81134298e-01, 2.87566751e-01],\n",
       "       [9.82297436e-01, 8.08614910e-01, 2.31507435e-01],\n",
       "       [2.71121600e-01, 2.53645986e-01, 8.52858663e-01],\n",
       "       [8.31505616e-01, 6.34116769e-01, 7.65442848e-01],\n",
       "       [7.67592569e-04, 1.66117594e-01, 5.22993147e-01],\n",
       "       [2.31507434e-01, 9.82297421e-01, 3.16028923e-01],\n",
       "       [6.29763678e-01, 7.58959234e-01, 1.68594755e-02],\n",
       "       [9.64861795e-01, 3.49041700e-01, 8.81203711e-01],\n",
       "       [7.24182547e-01, 6.35257721e-01, 1.25399604e-01],\n",
       "       [6.49381863e-01, 8.34466815e-01, 6.75316304e-02],\n",
       "       [9.35888695e-01, 3.99028420e-01, 1.41035765e-01],\n",
       "       [7.93604663e-01, 1.09440282e-01, 1.89808547e-01],\n",
       "       [3.95613368e-01, 9.68541026e-01, 7.32445776e-01],\n",
       "       [8.85867629e-01, 9.90578055e-01, 8.30862105e-01],\n",
       "       [5.73853698e-01, 4.64295089e-01, 3.59422415e-01],\n",
       "       [3.13236328e-02, 7.97114253e-01, 9.60283399e-01],\n",
       "       [3.10830879e-01, 9.20487463e-01, 9.39369857e-01],\n",
       "       [1.11482070e-01, 1.37699351e-01, 9.12295938e-01],\n",
       "       [2.73659452e-01, 1.32997468e-01, 7.68006444e-01],\n",
       "       [7.07529583e-01, 1.02958798e-01, 8.62336516e-01],\n",
       "       [8.62226101e-01, 5.56138873e-01, 6.88216150e-01],\n",
       "       [4.45852649e-01, 3.49876493e-01, 3.85715723e-01],\n",
       "       [9.68555724e-01, 7.53338993e-01, 6.08188272e-01],\n",
       "       [6.88853317e-01, 8.14921916e-01, 7.99390614e-01],\n",
       "       [1.12160284e-01, 6.75960481e-01, 8.31359029e-01],\n",
       "       [6.22831741e-02, 1.83595896e-01, 5.91238379e-01],\n",
       "       [5.96700919e-01, 6.59580350e-01, 2.21028745e-01],\n",
       "       [9.33903544e-01, 2.28080198e-01, 2.19291985e-01],\n",
       "       [5.69688097e-01, 9.50934470e-01, 6.81150913e-01],\n",
       "       [2.59608630e-01, 3.16301584e-02, 3.96970421e-01],\n",
       "       [2.59069806e-01, 3.85259867e-01, 2.95176774e-01],\n",
       "       [7.63294879e-01, 8.09460282e-01, 5.48462272e-01],\n",
       "       [8.47669795e-01, 8.75294566e-01, 1.98726252e-01],\n",
       "       [6.81150939e-01, 7.85209298e-01, 7.55382419e-01],\n",
       "       [6.13749544e-01, 5.00190854e-01, 1.75627843e-01],\n",
       "       [4.64295086e-01, 4.16484289e-02, 4.63428766e-01],\n",
       "       [6.10422054e-01, 8.06030929e-01, 3.11902650e-02],\n",
       "       [7.96318587e-01, 4.04314458e-01, 6.02500200e-01],\n",
       "       [6.85260665e-01, 6.52654588e-01, 1.50162712e-01],\n",
       "       [2.28080202e-01, 3.39587539e-01, 4.36440408e-01],\n",
       "       [1.44277149e-01, 1.53670251e-01, 5.23263812e-01],\n",
       "       [7.32445751e-01, 7.98668802e-01, 4.45075393e-01],\n",
       "       [8.92851033e-01, 5.77854812e-01, 9.59330201e-01],\n",
       "       [7.75949622e-01, 2.28426456e-01, 7.70105362e-01],\n",
       "       [1.04008467e-01, 6.25191927e-01, 5.10703862e-01],\n",
       "       [4.02108044e-01, 7.54038692e-01, 8.47043812e-01],\n",
       "       [5.10963473e-01, 7.55029798e-01, 6.22831732e-02],\n",
       "       [4.02942642e-01, 7.00312793e-01, 5.67517996e-01],\n",
       "       [4.75905330e-01, 9.59562540e-01, 5.58832943e-01],\n",
       "       [9.90786004e-01, 2.15109810e-01, 1.82513800e-02],\n",
       "       [9.71041751e-01, 9.05523121e-01, 7.34791994e-01],\n",
       "       [9.39509608e-01, 9.35584009e-01, 4.74894792e-01],\n",
       "       [2.55232582e-01, 2.44801685e-01, 3.49876493e-01],\n",
       "       [6.37964235e-01, 8.31505597e-01, 8.67086947e-01],\n",
       "       [6.94758742e-01, 2.39112526e-01, 3.02444398e-01],\n",
       "       [1.62086700e-01, 3.99974108e-01, 6.45111978e-01],\n",
       "       [1.69421155e-01, 1.19983919e-01, 8.77143085e-01],\n",
       "       [7.63798685e-01, 8.06830823e-01, 4.93494809e-01],\n",
       "       [5.33584263e-01, 4.55167532e-01, 4.55194384e-01],\n",
       "       [2.74913274e-01, 4.14311737e-02, 6.06081605e-01],\n",
       "       [1.09440283e-01, 4.31052655e-01, 3.99606861e-02],\n",
       "       [9.72749232e-01, 8.00617695e-01, 4.60310787e-01],\n",
       "       [3.74173857e-01, 6.33515537e-01, 2.05784783e-01],\n",
       "       [2.18983035e-02, 3.70907038e-01, 6.58187032e-01],\n",
       "       [5.88296140e-01, 8.91269684e-01, 5.56256771e-01],\n",
       "       [7.53845556e-02, 2.95267552e-01, 5.37827373e-01],\n",
       "       [3.96970432e-01, 2.14984462e-01, 8.88887763e-01],\n",
       "       [6.60717004e-02, 2.00952530e-01, 3.05443466e-01],\n",
       "       [1.09028044e-03, 5.05650640e-01, 3.83095920e-01],\n",
       "       [2.09302882e-01, 7.33218729e-01, 3.30361784e-01],\n",
       "       [5.05650623e-01, 1.95463330e-01, 1.33806646e-01],\n",
       "       [1.92533750e-01, 1.40976995e-01, 1.69814616e-01],\n",
       "       [7.46385276e-01, 8.90422940e-01, 6.13085449e-01],\n",
       "       [2.85988473e-01, 3.89944538e-02, 3.30432117e-01],\n",
       "       [4.09689428e-01, 8.48835826e-01, 4.83829200e-01],\n",
       "       [5.24490745e-01, 4.00176585e-01, 5.33296764e-01],\n",
       "       [8.08786472e-01, 5.09734452e-01, 9.82680976e-01],\n",
       "       [4.03578427e-02, 1.70896485e-01, 2.41100535e-01],\n",
       "       [8.56026212e-01, 8.27111721e-01, 7.08359659e-01],\n",
       "       [2.80051793e-01, 3.23849410e-01, 9.82295394e-01],\n",
       "       [2.37325941e-01, 3.64030868e-01, 1.54870883e-01],\n",
       "       [4.45075402e-01, 1.80128947e-01, 8.39148641e-01],\n",
       "       [9.16463931e-01, 6.62491739e-01, 9.53192532e-01],\n",
       "       [2.59030881e-01, 7.95456350e-01, 9.36075449e-01],\n",
       "       [3.04007166e-01, 9.71041739e-01, 3.69129658e-01],\n",
       "       [2.27446554e-01, 8.47043812e-01, 4.34195697e-01]])"
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "first_batch = []\n",
    "\n",
    "for epoch in range(2):\n",
    "    for idx, batch in enumerate(train_loader):\n",
    "        if idx == 0:\n",
    "            first_batch.append(batch)\n",
    "        \n",
    "np.c_[X_train[:batch_size], first_batch[0][0].numpy(), first_batch[1][0].numpy()]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Models"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We implement a linear model $$x \\mapsto model(x):=A x + b$$ \n",
    "\n",
    "with $A\\in \\mathbb{R}^{input\\_dim\\times output\\_dim}$, $b\\in\\mathbb{R}^{output\\_dim}$."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [],
   "source": [
    "import torch.nn as nn\n",
    "import torch\n",
    "\n",
    "#%% Linear layer\n",
    "class LinearModel(nn.Module):\n",
    "    def __init__(self, input_dim, output_dim):\n",
    "        super(LinearModel, self).__init__()\n",
    "\n",
    "        self.input_dim = input_dim\n",
    "        self.output_dim = output_dim\n",
    "\n",
    "        self.linear = nn.Linear(self.input_dim, self.output_dim, bias=True)\n",
    "\n",
    "    def forward(self, x):\n",
    "        out = self.linear(x)\n",
    "        return out\n",
    "    \n",
    "    def reset(self):\n",
    "        self.linear.reset_parameters()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [],
   "source": [
    "model = LinearModel(input_dim, output_dim)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Model inspection"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "LinearModel(\n",
      "  (linear): Linear(in_features=1, out_features=1, bias=True)\n",
      ")\n"
     ]
    }
   ],
   "source": [
    "print(model)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "See [pytorch.org/docs/stable/nn.html](https://pytorch.org/docs/stable/nn.html) for many other layers."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[Parameter containing:\n",
       " tensor([[0.9098]], requires_grad=True),\n",
       " Parameter containing:\n",
       " tensor([0.9818], requires_grad=True)]"
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "list(model.parameters())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Parameter containing:\n",
       "tensor([[0.9098]], requires_grad=True)"
      ]
     },
     "execution_count": 18,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "model.linear.weight"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Parameter containing:\n",
       "tensor([0.9818], requires_grad=True)"
      ]
     },
     "execution_count": 19,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "model.linear.bias"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### The `forward` method"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "tensor([[-0.8264],\n",
       "        [ 2.1672],\n",
       "        [-0.3973],\n",
       "        [ 1.0977],\n",
       "        [ 1.8477]], grad_fn=<AddmmBackward0>)"
      ]
     },
     "execution_count": 20,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "x = torch.randn(5, input_dim)\n",
    "model.forward(x)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[tensor([-0.8264], grad_fn=<AddBackward0>),\n",
       " tensor([2.1672], grad_fn=<AddBackward0>),\n",
       " tensor([-0.3973], grad_fn=<AddBackward0>),\n",
       " tensor([1.0977], grad_fn=<AddBackward0>),\n",
       " tensor([1.8477], grad_fn=<AddBackward0>)]"
      ]
     },
     "execution_count": 21,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "[model.linear.weight @ xx + model.linear.bias for xx in x]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "if input_dim == output_dim == 1:\n",
    "    fig = plt.figure()\n",
    "    fig.clf()\n",
    "    ax = fig.gca()\n",
    "    ax.plot(training_set.input_data, training_set.output_data, '.')\n",
    "    ax.plot(training_set.input_data, model.forward(training_set.input_data).detach().numpy(), '.')\n",
    "    ax.grid(True)\n",
    "    ax.set_xlabel('X_train')\n",
    "    ax.legend(['y_train', 'model(X_train)'])    "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Losses"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### The MSE loss"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The MSE loss is\n",
    "$$\n",
    "L(y, y') = \\|y-y'\\|_2^2\n",
    "$$"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [],
   "source": [
    "import torch.nn as nn\n",
    "loss_fun = nn.MSELoss(reduction='mean')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "More at [pytorch.org/docs/stable/nn.html#loss-functions](https://pytorch.org/docs/stable/nn.html#loss-functions)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "tensor(2.)"
      ]
     },
     "execution_count": 24,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "x = torch.tensor(np.array([1, 2, 1]).astype('f'))\n",
    "z = torch.tensor(np.array([0, 0, 0]).astype('f'))\n",
    "loss_fun(x, z)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Giving a score to the model (parameters) given the training set"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The loss for one data pair $(x_i, y_i)$ is \n",
    "$$\n",
    "L(model(x_i), y_i)\n",
    "$$\n",
    "\n",
    "The cumulative (average) loss on the training set is \n",
    "$$\n",
    "L(X_{train}, y_{train}):=\\frac{1}{n_{train}} \\sum_{i=1}^{n_{train}} L(model(x_i), y_i)\n",
    "$$"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [
    {
     "ename": "IndexError",
     "evalue": "list index out of range",
     "output_type": "error",
     "traceback": [
      "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[0;31mIndexError\u001b[0m                                Traceback (most recent call last)",
      "Input \u001b[0;32mIn [25]\u001b[0m, in \u001b[0;36m<cell line: 1>\u001b[0;34m()\u001b[0m\n\u001b[1;32m     22\u001b[0m ax\u001b[38;5;241m.\u001b[39mset_ylabel(\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mbias\u001b[39m\u001b[38;5;124m'\u001b[39m)\n\u001b[1;32m     23\u001b[0m ax\u001b[38;5;241m.\u001b[39mset_xlabel(\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mweight\u001b[39m\u001b[38;5;124m'\u001b[39m)\n\u001b[0;32m---> 24\u001b[0m \u001b[43max\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mlegend\u001b[49m\u001b[43m(\u001b[49m\u001b[43m[\u001b[49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[38;5;124;43m(A, b)\u001b[39;49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[43m]\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m     26\u001b[0m ax\u001b[38;5;241m.\u001b[39mgrid(\u001b[38;5;28;01mTrue\u001b[39;00m)\n",
      "File \u001b[0;32m~/anaconda3/envs/geometric_new/lib/python3.9/site-packages/matplotlib/axes/_axes.py:305\u001b[0m, in \u001b[0;36mAxes.legend\u001b[0;34m(self, *args, **kwargs)\u001b[0m\n\u001b[1;32m    303\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mlen\u001b[39m(extra_args):\n\u001b[1;32m    304\u001b[0m     \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mTypeError\u001b[39;00m(\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mlegend only accepts two non-keyword arguments\u001b[39m\u001b[38;5;124m'\u001b[39m)\n\u001b[0;32m--> 305\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mlegend_ \u001b[38;5;241m=\u001b[39m \u001b[43mmlegend\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mLegend\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mhandles\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mlabels\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m    306\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mlegend_\u001b[38;5;241m.\u001b[39m_remove_method \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_remove_legend\n\u001b[1;32m    307\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mlegend_\n",
      "File \u001b[0;32m~/anaconda3/envs/geometric_new/lib/python3.9/site-packages/matplotlib/legend.py:499\u001b[0m, in \u001b[0;36mLegend.__init__\u001b[0;34m(self, parent, handles, labels, loc, numpoints, markerscale, markerfirst, scatterpoints, scatteryoffsets, prop, fontsize, labelcolor, borderpad, labelspacing, handlelength, handleheight, handletextpad, borderaxespad, columnspacing, ncol, mode, fancybox, shadow, title, title_fontsize, framealpha, edgecolor, facecolor, bbox_to_anchor, bbox_transform, frameon, handler_map, title_fontproperties)\u001b[0m\n\u001b[1;32m    496\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_set_artist_props(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mlegendPatch)\n\u001b[1;32m    498\u001b[0m \u001b[38;5;66;03m# init with null renderer\u001b[39;00m\n\u001b[0;32m--> 499\u001b[0m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_init_legend_box\u001b[49m\u001b[43m(\u001b[49m\u001b[43mhandles\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mlabels\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mmarkerfirst\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m    501\u001b[0m tmp \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_loc_used_default\n\u001b[1;32m    502\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_set_loc(loc)\n",
      "File \u001b[0;32m~/anaconda3/envs/geometric_new/lib/python3.9/site-packages/matplotlib/legend.py:780\u001b[0m, in \u001b[0;36mLegend._init_legend_box\u001b[0;34m(self, handles, labels, markerfirst)\u001b[0m\n\u001b[1;32m    777\u001b[0m         text_list\u001b[38;5;241m.\u001b[39mappend(textbox\u001b[38;5;241m.\u001b[39m_text)\n\u001b[1;32m    778\u001b[0m         \u001b[38;5;66;03m# Create the artist for the legend which represents the\u001b[39;00m\n\u001b[1;32m    779\u001b[0m         \u001b[38;5;66;03m# original artist/handle.\u001b[39;00m\n\u001b[0;32m--> 780\u001b[0m         handle_list\u001b[38;5;241m.\u001b[39mappend(\u001b[43mhandler\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mlegend_artist\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43morig_handle\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m    781\u001b[0m \u001b[43m                                                 \u001b[49m\u001b[43mfontsize\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mhandlebox\u001b[49m\u001b[43m)\u001b[49m)\n\u001b[1;32m    782\u001b[0m         handles_and_labels\u001b[38;5;241m.\u001b[39mappend((handlebox, textbox))\n\u001b[1;32m    784\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m handles_and_labels:\n\u001b[1;32m    785\u001b[0m     \u001b[38;5;66;03m# We calculate number of rows in each column. The first\u001b[39;00m\n\u001b[1;32m    786\u001b[0m     \u001b[38;5;66;03m# (num_largecol) columns will have (nrows+1) rows, and remaining\u001b[39;00m\n\u001b[1;32m    787\u001b[0m     \u001b[38;5;66;03m# (num_smallcol) columns will have (nrows) rows.\u001b[39;00m\n",
      "File \u001b[0;32m~/anaconda3/envs/geometric_new/lib/python3.9/site-packages/matplotlib/legend_handler.py:119\u001b[0m, in \u001b[0;36mHandlerBase.legend_artist\u001b[0;34m(self, legend, orig_handle, fontsize, handlebox)\u001b[0m\n\u001b[1;32m     95\u001b[0m \u001b[38;5;124;03m\"\"\"\u001b[39;00m\n\u001b[1;32m     96\u001b[0m \u001b[38;5;124;03mReturn the artist that this HandlerBase generates for the given\u001b[39;00m\n\u001b[1;32m     97\u001b[0m \u001b[38;5;124;03moriginal artist/handle.\u001b[39;00m\n\u001b[0;32m   (...)\u001b[0m\n\u001b[1;32m    112\u001b[0m \n\u001b[1;32m    113\u001b[0m \u001b[38;5;124;03m\"\"\"\u001b[39;00m\n\u001b[1;32m    114\u001b[0m xdescent, ydescent, width, height \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39madjust_drawing_area(\n\u001b[1;32m    115\u001b[0m          legend, orig_handle,\n\u001b[1;32m    116\u001b[0m          handlebox\u001b[38;5;241m.\u001b[39mxdescent, handlebox\u001b[38;5;241m.\u001b[39mydescent,\n\u001b[1;32m    117\u001b[0m          handlebox\u001b[38;5;241m.\u001b[39mwidth, handlebox\u001b[38;5;241m.\u001b[39mheight,\n\u001b[1;32m    118\u001b[0m          fontsize)\n\u001b[0;32m--> 119\u001b[0m artists \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mcreate_artists\u001b[49m\u001b[43m(\u001b[49m\u001b[43mlegend\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43morig_handle\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m    120\u001b[0m \u001b[43m                              \u001b[49m\u001b[43mxdescent\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mydescent\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mwidth\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mheight\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m    121\u001b[0m \u001b[43m                              \u001b[49m\u001b[43mfontsize\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mhandlebox\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mget_transform\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m    123\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(artists, _Line2DHandleList):\n\u001b[1;32m    124\u001b[0m     artists \u001b[38;5;241m=\u001b[39m [artists[\u001b[38;5;241m0\u001b[39m]]\n",
      "File \u001b[0;32m~/anaconda3/envs/geometric_new/lib/python3.9/site-packages/matplotlib/legend_handler.py:515\u001b[0m, in \u001b[0;36mHandlerRegularPolyCollection.create_artists\u001b[0;34m(self, legend, orig_handle, xdescent, ydescent, width, height, fontsize, trans)\u001b[0m\n\u001b[1;32m    509\u001b[0m ydata \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mget_ydata(legend, xdescent, ydescent,\n\u001b[1;32m    510\u001b[0m                        width, height, fontsize)\n\u001b[1;32m    512\u001b[0m sizes \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mget_sizes(legend, orig_handle, xdescent, ydescent,\n\u001b[1;32m    513\u001b[0m                        width, height, fontsize)\n\u001b[0;32m--> 515\u001b[0m p \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mcreate_collection\u001b[49m\u001b[43m(\u001b[49m\u001b[43morig_handle\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43msizes\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m    516\u001b[0m \u001b[43m                           \u001b[49m\u001b[43moffsets\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43mlist\u001b[39;49m\u001b[43m(\u001b[49m\u001b[38;5;28;43mzip\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43mxdata_marker\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mydata\u001b[49m\u001b[43m)\u001b[49m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m    517\u001b[0m \u001b[43m                           \u001b[49m\u001b[43mtransOffset\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mtrans\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m    519\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mupdate_prop(p, orig_handle, legend)\n\u001b[1;32m    520\u001b[0m p\u001b[38;5;241m.\u001b[39m_transOffset \u001b[38;5;241m=\u001b[39m trans\n",
      "File \u001b[0;32m~/anaconda3/envs/geometric_new/lib/python3.9/site-packages/matplotlib/legend_handler.py:527\u001b[0m, in \u001b[0;36mHandlerPathCollection.create_collection\u001b[0;34m(self, orig_handle, sizes, offsets, transOffset)\u001b[0m\n\u001b[1;32m    526\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mcreate_collection\u001b[39m(\u001b[38;5;28mself\u001b[39m, orig_handle, sizes, offsets, transOffset):\n\u001b[0;32m--> 527\u001b[0m     p \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mtype\u001b[39m(orig_handle)([\u001b[43morig_handle\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mget_paths\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\u001b[43m[\u001b[49m\u001b[38;5;241;43m0\u001b[39;49m\u001b[43m]\u001b[49m],\n\u001b[1;32m    528\u001b[0m                           sizes\u001b[38;5;241m=\u001b[39msizes,\n\u001b[1;32m    529\u001b[0m                           offsets\u001b[38;5;241m=\u001b[39moffsets,\n\u001b[1;32m    530\u001b[0m                           transOffset\u001b[38;5;241m=\u001b[39mtransOffset,\n\u001b[1;32m    531\u001b[0m                           )\n\u001b[1;32m    532\u001b[0m     \u001b[38;5;28;01mreturn\u001b[39;00m p\n",
      "\u001b[0;31mIndexError\u001b[0m: list index out of range"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 720x576 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "if input_dim == output_dim == 1:\n",
    "\n",
    "    state_dict = model.state_dict()\n",
    "\n",
    "    ww, bb = np.meshgrid(np.linspace(-2, 2, 30), np.linspace(-2, 2, 30))\n",
    "\n",
    "    loss_values = 0 * ww\n",
    "    for i in range(ww.shape[0]):\n",
    "        for j in range(ww.shape[1]):\n",
    "            state_dict['linear.weight'] = torch.tensor([[ww[i, j]]])\n",
    "            state_dict['linear.bias'] = torch.tensor([bb[i, j]])\n",
    "            model.load_state_dict(state_dict)\n",
    "            loss_values[i, j] = loss_fun(model.forward(training_set.input_data),  training_set.output_data)\n",
    "\n",
    "    fig = plt.figure(figsize=(10, 8))\n",
    "    fig.clf()\n",
    "    ax = fig.gca()\n",
    "    levels = np.logspace(np.log(np.min(loss_values)), np.log(np.max(loss_values)), 20)\n",
    "    c=ax.contourf(ww, bb, loss_values, levels=levels, norm=colors.LogNorm())\n",
    "    plt.colorbar(c)\n",
    "    ax.plot(A[0], b, 'r*', markersize=10)\n",
    "    ax.set_ylabel('bias')\n",
    "    ax.set_xlabel('weight')\n",
    "    ax.legend(['(A, b)'])\n",
    "    \n",
    "    ax.grid(True)    "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Optimization"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Goal: minimize the loss given the data:\n",
    "$$\n",
    "\\min\\limits_{par \\in model} L(X_{train}, y_{train})\n",
    "=\\min\\limits_{par \\in model} \\frac{1}{n_{train}} \\sum_{i=1}^{n_{train}} L(x_i, model(x_i))\n",
    "$$\n",
    "\n",
    "In this case $par =\\{A, b\\}$."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Iterative gradient based optimization:\n",
    "\\begin{align*}\n",
    "par^{(0)} &= par_0\\\\\n",
    "par^{(k+1)} &=  par^{(k)} - \\eta^{(k)} \\nabla_{par} L(X_{train}, y_{train})\n",
    "\\end{align*}    \n",
    "with learning rate $\\eta^{(k)}$."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Gradients"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The model is \n",
    "$$\n",
    "model(x) = A x + b\n",
    "$$\n",
    "\n",
    "With $input\\_dim = output\\_dim = 1$ we have $A:=a\\in\\mathbb{R},\\ b\\in\\mathbb{R}$. \n",
    "\n",
    "For a data pair $(x, y)$ the loss is\n",
    "\\begin{align*}\n",
    "L(x, y) \n",
    "&= \\|model(x)-y\\|_2^2\\\\ \n",
    "&= (model(x)-y)^2\\\\\n",
    "&= (a x + b - y)^2\\\\\n",
    "&= a^2 x^2 + 2 a b x - 2 a xy + b^2 -2 b y + y^2.\n",
    "\\end{align*}\n",
    "\n",
    "We can compute\n",
    "\\begin{align*}\n",
    "\\nabla_a L(x, y) \n",
    "&= 2 a x^2 + 2 b x - 2 xy\n",
    "=2 x (a x + b - y)\\\\\n",
    "\\nabla_b L(x, y)\n",
    "&= 2 a x + 2 b - 2 y\n",
    "= 2 (ax + b - y).\n",
    "\\end{align*}\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [],
   "source": [
    "x = torch.randn(1, input_dim)\n",
    "y =  torch.randn(1, output_dim)\n",
    "\n",
    "model.zero_grad()\n",
    "loss = loss_fun(model.forward(x),  y)\n",
    "loss.backward()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "tensor([[3.2567]])\n",
      "tensor([[3.2567]], grad_fn=<MulBackward0>)\n",
      "tensor([7.3100])\n",
      "tensor([[7.3100]], grad_fn=<MulBackward0>)\n"
     ]
    }
   ],
   "source": [
    "if input_dim == output_dim == 1:\n",
    "    print(model.linear.weight.grad)\n",
    "    print(2 * x * (model.linear.weight * x + model.linear.bias - y))\n",
    "    \n",
    "    print(model.linear.bias.grad)\n",
    "    print(2 * (model.linear.weight * x + model.linear.bias - y))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Handmade optimization"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {},
   "outputs": [],
   "source": [
    "if input_dim == output_dim == 1:\n",
    "\n",
    "    num_iter = 200\n",
    "    lr = 0.5 # 0.01\n",
    "\n",
    "    train_hist = {}\n",
    "    train_hist['weight'] = []\n",
    "    train_hist['bias'] = []\n",
    "\n",
    "    model.reset()\n",
    "    state_dict = model.state_dict()\n",
    "\n",
    "    for _ in range(num_iter):\n",
    "\n",
    "        model.zero_grad()\n",
    "        loss = loss_fun(model.forward(training_set.input_data), training_set.output_data)\n",
    "        loss.backward()\n",
    "\n",
    "        w = model.linear.weight.item()\n",
    "        b = model.linear.bias.item()\n",
    "\n",
    "        dw = model.linear.weight.grad.item()\n",
    "        db = model.linear.bias.grad.item()\n",
    "\n",
    "        state_dict['linear.weight'] += torch.tensor([-lr * dw])\n",
    "        state_dict['linear.bias'] += torch.tensor([-lr * db])\n",
    "        model.load_state_dict(state_dict)\n",
    "\n",
    "        train_hist['weight'].append(w)\n",
    "        train_hist['bias'].append(b)\n",
    "\n",
    "    for label in train_hist:\n",
    "        train_hist[label] = np.array(train_hist[label])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 576x576 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "if input_dim == output_dim == 1:\n",
    "    fig = plt.figure(figsize=(8, 8))\n",
    "    fig.clf()\n",
    "    ax = fig.gca()\n",
    "    levels = np.logspace(np.log(np.min(loss_values)), np.log(np.max(loss_values)), 20)\n",
    "    ax.contourf(ww, bb, loss_values, levels=levels, norm=colors.LogNorm())\n",
    "    ax.set_xlabel('weight')\n",
    "    ax.set_ylabel('bias')\n",
    "    ax.grid(True)\n",
    "    ax.set_xlim(-2, 2) \n",
    "    ax.set_ylim(-2, 2) \n",
    "    \n",
    "    ax.plot(train_hist['weight'], train_hist['bias'], '.-b')\n",
    "    ax.plot(A[0], b, 'r*', markersize=10)\n",
    "\n",
    "    #ax.legend(['optim', '(A, b)'])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Stochastic GD"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "* Avoid loading the full training set\n",
    "* Avoid evaluating the model on the full training set"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "At every step, compute the loss on a batch of data $(X^{(k)}, y^{(k)})\\sim (X_{train}, y_{train})$: \n",
    "\n",
    "\\begin{align*}\n",
    "L(X^{(k)}, y^{(k)}) := \\sum_{(x, y) \\in (X^{(k)}, y^{(k)})} L(x, model(x)).\n",
    "\\end{align*}    \n",
    "\n",
    "and then update with this approximated gradient:\n",
    "\\begin{align*}\n",
    "par^{(k+1)} &=  par^{(k)} - \\eta^{(k)} \\nabla_{par} L(X^{(k)}, y^{(k)}). \n",
    "\\end{align*}    "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### PyTorch `optim`"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {},
   "outputs": [],
   "source": [
    "lr = 0.1\n",
    "weight_decay = 5e-4\n",
    "optimizer = torch.optim.Adam(model.parameters(), lr=lr, weight_decay=weight_decay)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "More at [pytorch.org/docs/stable/optim.html](https://pytorch.org/docs/stable/optim.html)."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {},
   "outputs": [],
   "source": [
    "n_epochs = 100"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[Epoch    1/ 100] [Batch    1/   9] Loss:  2.39e+00\n",
      "[Epoch    1/ 100] [Batch    2/   9] Loss:  1.86e+00\n",
      "[Epoch    1/ 100] [Batch    3/   9] Loss:  1.57e+00\n",
      "[Epoch    1/ 100] [Batch    4/   9] Loss:  1.14e+00\n",
      "[Epoch    1/ 100] [Batch    5/   9] Loss:  8.70e-01\n",
      "[Epoch    1/ 100] [Batch    6/   9] Loss:  6.05e-01\n",
      "[Epoch    1/ 100] [Batch    7/   9] Loss:  4.03e-01\n",
      "[Epoch    1/ 100] [Batch    8/   9] Loss:  2.51e-01\n",
      "[Epoch    1/ 100] [Batch    9/   9] Loss:  1.35e-01\n",
      "[Epoch    2/ 100] [Batch    1/   9] Loss:  6.43e-02\n",
      "[Epoch    2/ 100] [Batch    2/   9] Loss:  2.48e-02\n",
      "[Epoch    2/ 100] [Batch    3/   9] Loss:  1.06e-02\n",
      "[Epoch    2/ 100] [Batch    4/   9] Loss:  2.35e-02\n",
      "[Epoch    2/ 100] [Batch    5/   9] Loss:  4.01e-02\n",
      "[Epoch    2/ 100] [Batch    6/   9] Loss:  6.55e-02\n",
      "[Epoch    2/ 100] [Batch    7/   9] Loss:  1.14e-01\n",
      "[Epoch    2/ 100] [Batch    8/   9] Loss:  1.69e-01\n",
      "[Epoch    2/ 100] [Batch    9/   9] Loss:  1.72e-01\n",
      "[Epoch    3/ 100] [Batch    1/   9] Loss:  1.80e-01\n",
      "[Epoch    3/ 100] [Batch    2/   9] Loss:  1.87e-01\n",
      "[Epoch    3/ 100] [Batch    3/   9] Loss:  1.64e-01\n",
      "[Epoch    3/ 100] [Batch    4/   9] Loss:  1.58e-01\n",
      "[Epoch    3/ 100] [Batch    5/   9] Loss:  1.50e-01\n",
      "[Epoch    3/ 100] [Batch    6/   9] Loss:  1.26e-01\n",
      "[Epoch    3/ 100] [Batch    7/   9] Loss:  1.18e-01\n",
      "[Epoch    3/ 100] [Batch    8/   9] Loss:  8.33e-02\n",
      "[Epoch    3/ 100] [Batch    9/   9] Loss:  4.59e-02\n",
      "[Epoch    4/ 100] [Batch    1/   9] Loss:  3.73e-02\n",
      "[Epoch    4/ 100] [Batch    2/   9] Loss:  2.62e-02\n",
      "[Epoch    4/ 100] [Batch    3/   9] Loss:  1.59e-02\n",
      "[Epoch    4/ 100] [Batch    4/   9] Loss:  9.40e-03\n",
      "[Epoch    4/ 100] [Batch    5/   9] Loss:  6.52e-03\n",
      "[Epoch    4/ 100] [Batch    6/   9] Loss:  6.98e-03\n",
      "[Epoch    4/ 100] [Batch    7/   9] Loss:  1.11e-02\n",
      "[Epoch    4/ 100] [Batch    8/   9] Loss:  1.69e-02\n",
      "[Epoch    4/ 100] [Batch    9/   9] Loss:  2.47e-02\n",
      "[Epoch    5/ 100] [Batch    1/   9] Loss:  2.65e-02\n",
      "[Epoch    5/ 100] [Batch    2/   9] Loss:  2.71e-02\n",
      "[Epoch    5/ 100] [Batch    3/   9] Loss:  3.22e-02\n",
      "[Epoch    5/ 100] [Batch    4/   9] Loss:  3.03e-02\n",
      "[Epoch    5/ 100] [Batch    5/   9] Loss:  2.63e-02\n",
      "[Epoch    5/ 100] [Batch    6/   9] Loss:  2.26e-02\n",
      "[Epoch    5/ 100] [Batch    7/   9] Loss:  2.28e-02\n",
      "[Epoch    5/ 100] [Batch    8/   9] Loss:  1.83e-02\n",
      "[Epoch    5/ 100] [Batch    9/   9] Loss:  9.92e-03\n",
      "[Epoch    6/ 100] [Batch    1/   9] Loss:  1.10e-02\n",
      "[Epoch    6/ 100] [Batch    2/   9] Loss:  8.98e-03\n",
      "[Epoch    6/ 100] [Batch    3/   9] Loss:  6.16e-03\n",
      "[Epoch    6/ 100] [Batch    4/   9] Loss:  3.55e-03\n",
      "[Epoch    6/ 100] [Batch    5/   9] Loss:  4.18e-03\n",
      "[Epoch    6/ 100] [Batch    6/   9] Loss:  3.67e-03\n",
      "[Epoch    6/ 100] [Batch    7/   9] Loss:  5.02e-03\n",
      "[Epoch    6/ 100] [Batch    8/   9] Loss:  5.63e-03\n",
      "[Epoch    6/ 100] [Batch    9/   9] Loss:  7.92e-03\n",
      "[Epoch    7/ 100] [Batch    1/   9] Loss:  5.56e-03\n",
      "[Epoch    7/ 100] [Batch    2/   9] Loss:  7.07e-03\n",
      "[Epoch    7/ 100] [Batch    3/   9] Loss:  7.07e-03\n",
      "[Epoch    7/ 100] [Batch    4/   9] Loss:  7.28e-03\n",
      "[Epoch    7/ 100] [Batch    5/   9] Loss:  6.75e-03\n",
      "[Epoch    7/ 100] [Batch    6/   9] Loss:  5.65e-03\n",
      "[Epoch    7/ 100] [Batch    7/   9] Loss:  4.06e-03\n",
      "[Epoch    7/ 100] [Batch    8/   9] Loss:  3.97e-03\n",
      "[Epoch    7/ 100] [Batch    9/   9] Loss:  4.30e-03\n",
      "[Epoch    8/ 100] [Batch    1/   9] Loss:  2.66e-03\n",
      "[Epoch    8/ 100] [Batch    2/   9] Loss:  2.56e-03\n",
      "[Epoch    8/ 100] [Batch    3/   9] Loss:  2.44e-03\n",
      "[Epoch    8/ 100] [Batch    4/   9] Loss:  2.98e-03\n",
      "[Epoch    8/ 100] [Batch    5/   9] Loss:  2.64e-03\n",
      "[Epoch    8/ 100] [Batch    6/   9] Loss:  2.41e-03\n",
      "[Epoch    8/ 100] [Batch    7/   9] Loss:  2.83e-03\n",
      "[Epoch    8/ 100] [Batch    8/   9] Loss:  2.79e-03\n",
      "[Epoch    8/ 100] [Batch    9/   9] Loss:  3.04e-03\n",
      "[Epoch    9/ 100] [Batch    1/   9] Loss:  2.83e-03\n",
      "[Epoch    9/ 100] [Batch    2/   9] Loss:  2.98e-03\n",
      "[Epoch    9/ 100] [Batch    3/   9] Loss:  2.41e-03\n",
      "[Epoch    9/ 100] [Batch    4/   9] Loss:  2.59e-03\n",
      "[Epoch    9/ 100] [Batch    5/   9] Loss:  2.55e-03\n",
      "[Epoch    9/ 100] [Batch    6/   9] Loss:  2.23e-03\n",
      "[Epoch    9/ 100] [Batch    7/   9] Loss:  2.29e-03\n",
      "[Epoch    9/ 100] [Batch    8/   9] Loss:  2.16e-03\n",
      "[Epoch    9/ 100] [Batch    9/   9] Loss:  1.66e-03\n",
      "[Epoch   10/ 100] [Batch    1/   9] Loss:  1.84e-03\n",
      "[Epoch   10/ 100] [Batch    2/   9] Loss:  2.29e-03\n",
      "[Epoch   10/ 100] [Batch    3/   9] Loss:  2.05e-03\n",
      "[Epoch   10/ 100] [Batch    4/   9] Loss:  1.72e-03\n",
      "[Epoch   10/ 100] [Batch    5/   9] Loss:  1.93e-03\n",
      "[Epoch   10/ 100] [Batch    6/   9] Loss:  2.31e-03\n",
      "[Epoch   10/ 100] [Batch    7/   9] Loss:  2.26e-03\n",
      "[Epoch   10/ 100] [Batch    8/   9] Loss:  1.47e-03\n",
      "[Epoch   10/ 100] [Batch    9/   9] Loss:  1.65e-03\n",
      "[Epoch   11/ 100] [Batch    1/   9] Loss:  1.90e-03\n",
      "[Epoch   11/ 100] [Batch    2/   9] Loss:  1.89e-03\n",
      "[Epoch   11/ 100] [Batch    3/   9] Loss:  1.73e-03\n",
      "[Epoch   11/ 100] [Batch    4/   9] Loss:  1.40e-03\n",
      "[Epoch   11/ 100] [Batch    5/   9] Loss:  1.63e-03\n",
      "[Epoch   11/ 100] [Batch    6/   9] Loss:  2.00e-03\n",
      "[Epoch   11/ 100] [Batch    7/   9] Loss:  1.75e-03\n",
      "[Epoch   11/ 100] [Batch    8/   9] Loss:  1.64e-03\n",
      "[Epoch   11/ 100] [Batch    9/   9] Loss:  1.98e-03\n",
      "[Epoch   12/ 100] [Batch    1/   9] Loss:  1.76e-03\n",
      "[Epoch   12/ 100] [Batch    2/   9] Loss:  2.07e-03\n",
      "[Epoch   12/ 100] [Batch    3/   9] Loss:  1.82e-03\n",
      "[Epoch   12/ 100] [Batch    4/   9] Loss:  1.73e-03\n",
      "[Epoch   12/ 100] [Batch    5/   9] Loss:  1.65e-03\n",
      "[Epoch   12/ 100] [Batch    6/   9] Loss:  1.68e-03\n",
      "[Epoch   12/ 100] [Batch    7/   9] Loss:  1.65e-03\n",
      "[Epoch   12/ 100] [Batch    8/   9] Loss:  1.67e-03\n",
      "[Epoch   12/ 100] [Batch    9/   9] Loss:  1.31e-03\n",
      "[Epoch   13/ 100] [Batch    1/   9] Loss:  1.67e-03\n",
      "[Epoch   13/ 100] [Batch    2/   9] Loss:  1.71e-03\n",
      "[Epoch   13/ 100] [Batch    3/   9] Loss:  1.43e-03\n",
      "[Epoch   13/ 100] [Batch    4/   9] Loss:  1.69e-03\n",
      "[Epoch   13/ 100] [Batch    5/   9] Loss:  1.67e-03\n",
      "[Epoch   13/ 100] [Batch    6/   9] Loss:  1.90e-03\n",
      "[Epoch   13/ 100] [Batch    7/   9] Loss:  1.64e-03\n",
      "[Epoch   13/ 100] [Batch    8/   9] Loss:  1.81e-03\n",
      "[Epoch   13/ 100] [Batch    9/   9] Loss:  1.66e-03\n",
      "[Epoch   14/ 100] [Batch    1/   9] Loss:  1.70e-03\n",
      "[Epoch   14/ 100] [Batch    2/   9] Loss:  1.46e-03\n",
      "[Epoch   14/ 100] [Batch    3/   9] Loss:  1.64e-03\n",
      "[Epoch   14/ 100] [Batch    4/   9] Loss:  1.65e-03\n",
      "[Epoch   14/ 100] [Batch    5/   9] Loss:  1.50e-03\n",
      "[Epoch   14/ 100] [Batch    6/   9] Loss:  1.79e-03\n",
      "[Epoch   14/ 100] [Batch    7/   9] Loss:  1.84e-03\n",
      "[Epoch   14/ 100] [Batch    8/   9] Loss:  1.82e-03\n",
      "[Epoch   14/ 100] [Batch    9/   9] Loss:  1.27e-03\n",
      "[Epoch   15/ 100] [Batch    1/   9] Loss:  1.32e-03\n",
      "[Epoch   15/ 100] [Batch    2/   9] Loss:  1.86e-03\n",
      "[Epoch   15/ 100] [Batch    3/   9] Loss:  2.11e-03\n",
      "[Epoch   15/ 100] [Batch    4/   9] Loss:  1.51e-03\n",
      "[Epoch   15/ 100] [Batch    5/   9] Loss:  1.48e-03\n",
      "[Epoch   15/ 100] [Batch    6/   9] Loss:  1.51e-03\n",
      "[Epoch   15/ 100] [Batch    7/   9] Loss:  1.95e-03\n",
      "[Epoch   15/ 100] [Batch    8/   9] Loss:  1.64e-03\n",
      "[Epoch   15/ 100] [Batch    9/   9] Loss:  1.83e-03\n",
      "[Epoch   16/ 100] [Batch    1/   9] Loss:  1.93e-03\n",
      "[Epoch   16/ 100] [Batch    2/   9] Loss:  1.86e-03\n",
      "[Epoch   16/ 100] [Batch    3/   9] Loss:  1.43e-03\n",
      "[Epoch   16/ 100] [Batch    4/   9] Loss:  1.37e-03\n",
      "[Epoch   16/ 100] [Batch    5/   9] Loss:  1.72e-03\n",
      "[Epoch   16/ 100] [Batch    6/   9] Loss:  1.49e-03\n",
      "[Epoch   16/ 100] [Batch    7/   9] Loss:  1.58e-03\n",
      "[Epoch   16/ 100] [Batch    8/   9] Loss:  1.77e-03\n",
      "[Epoch   16/ 100] [Batch    9/   9] Loss:  2.05e-03\n",
      "[Epoch   17/ 100] [Batch    1/   9] Loss:  1.70e-03\n",
      "[Epoch   17/ 100] [Batch    2/   9] Loss:  1.65e-03\n",
      "[Epoch   17/ 100] [Batch    3/   9] Loss:  1.54e-03\n",
      "[Epoch   17/ 100] [Batch    4/   9] Loss:  1.77e-03\n",
      "[Epoch   17/ 100] [Batch    5/   9] Loss:  1.51e-03\n",
      "[Epoch   17/ 100] [Batch    6/   9] Loss:  1.91e-03\n",
      "[Epoch   17/ 100] [Batch    7/   9] Loss:  1.80e-03\n",
      "[Epoch   17/ 100] [Batch    8/   9] Loss:  1.49e-03\n",
      "[Epoch   17/ 100] [Batch    9/   9] Loss:  1.44e-03\n",
      "[Epoch   18/ 100] [Batch    1/   9] Loss:  1.69e-03\n",
      "[Epoch   18/ 100] [Batch    2/   9] Loss:  1.57e-03\n",
      "[Epoch   18/ 100] [Batch    3/   9] Loss:  1.69e-03\n",
      "[Epoch   18/ 100] [Batch    4/   9] Loss:  1.78e-03\n",
      "[Epoch   18/ 100] [Batch    5/   9] Loss:  1.72e-03\n",
      "[Epoch   18/ 100] [Batch    6/   9] Loss:  1.66e-03\n",
      "[Epoch   18/ 100] [Batch    7/   9] Loss:  1.52e-03\n",
      "[Epoch   18/ 100] [Batch    8/   9] Loss:  1.51e-03\n",
      "[Epoch   18/ 100] [Batch    9/   9] Loss:  2.22e-03\n",
      "[Epoch   19/ 100] [Batch    1/   9] Loss:  1.71e-03\n",
      "[Epoch   19/ 100] [Batch    2/   9] Loss:  1.55e-03\n",
      "[Epoch   19/ 100] [Batch    3/   9] Loss:  1.77e-03\n",
      "[Epoch   19/ 100] [Batch    4/   9] Loss:  1.49e-03\n",
      "[Epoch   19/ 100] [Batch    5/   9] Loss:  1.49e-03\n",
      "[Epoch   19/ 100] [Batch    6/   9] Loss:  1.68e-03\n",
      "[Epoch   19/ 100] [Batch    7/   9] Loss:  1.63e-03\n",
      "[Epoch   19/ 100] [Batch    8/   9] Loss:  1.82e-03\n",
      "[Epoch   19/ 100] [Batch    9/   9] Loss:  2.13e-03\n",
      "[Epoch   20/ 100] [Batch    1/   9] Loss:  1.42e-03\n",
      "[Epoch   20/ 100] [Batch    2/   9] Loss:  1.60e-03\n",
      "[Epoch   20/ 100] [Batch    3/   9] Loss:  2.00e-03\n",
      "[Epoch   20/ 100] [Batch    4/   9] Loss:  1.69e-03\n",
      "[Epoch   20/ 100] [Batch    5/   9] Loss:  1.59e-03\n",
      "[Epoch   20/ 100] [Batch    6/   9] Loss:  1.49e-03\n",
      "[Epoch   20/ 100] [Batch    7/   9] Loss:  1.72e-03\n",
      "[Epoch   20/ 100] [Batch    8/   9] Loss:  1.52e-03\n",
      "[Epoch   20/ 100] [Batch    9/   9] Loss:  2.44e-03\n",
      "[Epoch   21/ 100] [Batch    1/   9] Loss:  1.32e-03\n",
      "[Epoch   21/ 100] [Batch    2/   9] Loss:  1.65e-03\n",
      "[Epoch   21/ 100] [Batch    3/   9] Loss:  1.65e-03\n",
      "[Epoch   21/ 100] [Batch    4/   9] Loss:  1.80e-03\n",
      "[Epoch   21/ 100] [Batch    5/   9] Loss:  1.51e-03\n",
      "[Epoch   21/ 100] [Batch    6/   9] Loss:  1.92e-03\n",
      "[Epoch   21/ 100] [Batch    7/   9] Loss:  1.61e-03\n",
      "[Epoch   21/ 100] [Batch    8/   9] Loss:  1.81e-03\n",
      "[Epoch   21/ 100] [Batch    9/   9] Loss:  1.64e-03\n",
      "[Epoch   22/ 100] [Batch    1/   9] Loss:  1.82e-03\n",
      "[Epoch   22/ 100] [Batch    2/   9] Loss:  1.68e-03\n",
      "[Epoch   22/ 100] [Batch    3/   9] Loss:  1.44e-03\n",
      "[Epoch   22/ 100] [Batch    4/   9] Loss:  1.55e-03\n",
      "[Epoch   22/ 100] [Batch    5/   9] Loss:  1.67e-03\n",
      "[Epoch   22/ 100] [Batch    6/   9] Loss:  1.35e-03\n",
      "[Epoch   22/ 100] [Batch    7/   9] Loss:  1.94e-03\n",
      "[Epoch   22/ 100] [Batch    8/   9] Loss:  1.99e-03\n",
      "[Epoch   22/ 100] [Batch    9/   9] Loss:  1.14e-03\n",
      "[Epoch   23/ 100] [Batch    1/   9] Loss:  1.41e-03\n",
      "[Epoch   23/ 100] [Batch    2/   9] Loss:  1.92e-03\n",
      "[Epoch   23/ 100] [Batch    3/   9] Loss:  1.44e-03\n",
      "[Epoch   23/ 100] [Batch    4/   9] Loss:  1.69e-03\n",
      "[Epoch   23/ 100] [Batch    5/   9] Loss:  1.93e-03\n",
      "[Epoch   23/ 100] [Batch    6/   9] Loss:  1.39e-03\n",
      "[Epoch   23/ 100] [Batch    7/   9] Loss:  1.77e-03\n",
      "[Epoch   23/ 100] [Batch    8/   9] Loss:  1.79e-03\n",
      "[Epoch   23/ 100] [Batch    9/   9] Loss:  1.55e-03\n",
      "[Epoch   24/ 100] [Batch    1/   9] Loss:  1.87e-03\n",
      "[Epoch   24/ 100] [Batch    2/   9] Loss:  1.60e-03\n",
      "[Epoch   24/ 100] [Batch    3/   9] Loss:  1.70e-03\n",
      "[Epoch   24/ 100] [Batch    4/   9] Loss:  1.88e-03\n",
      "[Epoch   24/ 100] [Batch    5/   9] Loss:  1.61e-03\n",
      "[Epoch   24/ 100] [Batch    6/   9] Loss:  1.26e-03\n",
      "[Epoch   24/ 100] [Batch    7/   9] Loss:  1.69e-03\n",
      "[Epoch   24/ 100] [Batch    8/   9] Loss:  1.57e-03\n",
      "[Epoch   24/ 100] [Batch    9/   9] Loss:  1.84e-03\n",
      "[Epoch   25/ 100] [Batch    1/   9] Loss:  1.54e-03\n",
      "[Epoch   25/ 100] [Batch    2/   9] Loss:  1.59e-03\n",
      "[Epoch   25/ 100] [Batch    3/   9] Loss:  1.46e-03\n",
      "[Epoch   25/ 100] [Batch    4/   9] Loss:  1.55e-03\n",
      "[Epoch   25/ 100] [Batch    5/   9] Loss:  1.76e-03\n",
      "[Epoch   25/ 100] [Batch    6/   9] Loss:  1.73e-03\n",
      "[Epoch   25/ 100] [Batch    7/   9] Loss:  1.78e-03\n",
      "[Epoch   25/ 100] [Batch    8/   9] Loss:  1.93e-03\n",
      "[Epoch   25/ 100] [Batch    9/   9] Loss:  1.45e-03\n",
      "[Epoch   26/ 100] [Batch    1/   9] Loss:  1.61e-03\n",
      "[Epoch   26/ 100] [Batch    2/   9] Loss:  1.69e-03\n",
      "[Epoch   26/ 100] [Batch    3/   9] Loss:  1.73e-03\n",
      "[Epoch   26/ 100] [Batch    4/   9] Loss:  1.64e-03\n",
      "[Epoch   26/ 100] [Batch    5/   9] Loss:  1.75e-03\n",
      "[Epoch   26/ 100] [Batch    6/   9] Loss:  1.80e-03\n",
      "[Epoch   26/ 100] [Batch    7/   9] Loss:  1.19e-03\n",
      "[Epoch   26/ 100] [Batch    8/   9] Loss:  2.10e-03\n",
      "[Epoch   26/ 100] [Batch    9/   9] Loss:  1.08e-03\n",
      "[Epoch   27/ 100] [Batch    1/   9] Loss:  1.51e-03\n",
      "[Epoch   27/ 100] [Batch    2/   9] Loss:  1.61e-03\n",
      "[Epoch   27/ 100] [Batch    3/   9] Loss:  1.93e-03\n",
      "[Epoch   27/ 100] [Batch    4/   9] Loss:  1.72e-03\n",
      "[Epoch   27/ 100] [Batch    5/   9] Loss:  1.42e-03\n",
      "[Epoch   27/ 100] [Batch    6/   9] Loss:  1.54e-03\n",
      "[Epoch   27/ 100] [Batch    7/   9] Loss:  1.73e-03\n",
      "[Epoch   27/ 100] [Batch    8/   9] Loss:  1.93e-03\n",
      "[Epoch   27/ 100] [Batch    9/   9] Loss:  1.61e-03\n",
      "[Epoch   28/ 100] [Batch    1/   9] Loss:  1.58e-03\n",
      "[Epoch   28/ 100] [Batch    2/   9] Loss:  1.30e-03\n",
      "[Epoch   28/ 100] [Batch    3/   9] Loss:  2.15e-03\n",
      "[Epoch   28/ 100] [Batch    4/   9] Loss:  1.47e-03\n",
      "[Epoch   28/ 100] [Batch    5/   9] Loss:  1.96e-03\n",
      "[Epoch   28/ 100] [Batch    6/   9] Loss:  1.62e-03\n",
      "[Epoch   28/ 100] [Batch    7/   9] Loss:  1.84e-03\n",
      "[Epoch   28/ 100] [Batch    8/   9] Loss:  1.60e-03\n",
      "[Epoch   28/ 100] [Batch    9/   9] Loss:  1.58e-03\n",
      "[Epoch   29/ 100] [Batch    1/   9] Loss:  1.51e-03\n",
      "[Epoch   29/ 100] [Batch    2/   9] Loss:  1.69e-03\n",
      "[Epoch   29/ 100] [Batch    3/   9] Loss:  1.62e-03\n",
      "[Epoch   29/ 100] [Batch    4/   9] Loss:  1.80e-03\n",
      "[Epoch   29/ 100] [Batch    5/   9] Loss:  1.37e-03\n",
      "[Epoch   29/ 100] [Batch    6/   9] Loss:  1.49e-03\n",
      "[Epoch   29/ 100] [Batch    7/   9] Loss:  1.85e-03\n",
      "[Epoch   29/ 100] [Batch    8/   9] Loss:  1.89e-03\n",
      "[Epoch   29/ 100] [Batch    9/   9] Loss:  1.90e-03\n",
      "[Epoch   30/ 100] [Batch    1/   9] Loss:  1.42e-03\n",
      "[Epoch   30/ 100] [Batch    2/   9] Loss:  1.51e-03\n",
      "[Epoch   30/ 100] [Batch    3/   9] Loss:  1.86e-03\n",
      "[Epoch   30/ 100] [Batch    4/   9] Loss:  1.92e-03\n",
      "[Epoch   30/ 100] [Batch    5/   9] Loss:  1.71e-03\n",
      "[Epoch   30/ 100] [Batch    6/   9] Loss:  1.76e-03\n",
      "[Epoch   30/ 100] [Batch    7/   9] Loss:  1.60e-03\n",
      "[Epoch   30/ 100] [Batch    8/   9] Loss:  1.69e-03\n",
      "[Epoch   30/ 100] [Batch    9/   9] Loss:  1.33e-03\n",
      "[Epoch   31/ 100] [Batch    1/   9] Loss:  1.21e-03\n",
      "[Epoch   31/ 100] [Batch    2/   9] Loss:  1.66e-03\n",
      "[Epoch   31/ 100] [Batch    3/   9] Loss:  1.70e-03\n",
      "[Epoch   31/ 100] [Batch    4/   9] Loss:  1.55e-03\n",
      "[Epoch   31/ 100] [Batch    5/   9] Loss:  1.97e-03\n",
      "[Epoch   31/ 100] [Batch    6/   9] Loss:  2.09e-03\n",
      "[Epoch   31/ 100] [Batch    7/   9] Loss:  1.86e-03\n",
      "[Epoch   31/ 100] [Batch    8/   9] Loss:  1.51e-03\n",
      "[Epoch   31/ 100] [Batch    9/   9] Loss:  1.20e-03\n",
      "[Epoch   32/ 100] [Batch    1/   9] Loss:  1.81e-03\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[Epoch   32/ 100] [Batch    2/   9] Loss:  1.57e-03\n",
      "[Epoch   32/ 100] [Batch    3/   9] Loss:  1.48e-03\n",
      "[Epoch   32/ 100] [Batch    4/   9] Loss:  1.93e-03\n",
      "[Epoch   32/ 100] [Batch    5/   9] Loss:  1.42e-03\n",
      "[Epoch   32/ 100] [Batch    6/   9] Loss:  1.59e-03\n",
      "[Epoch   32/ 100] [Batch    7/   9] Loss:  1.68e-03\n",
      "[Epoch   32/ 100] [Batch    8/   9] Loss:  1.84e-03\n",
      "[Epoch   32/ 100] [Batch    9/   9] Loss:  1.80e-03\n",
      "[Epoch   33/ 100] [Batch    1/   9] Loss:  1.96e-03\n",
      "[Epoch   33/ 100] [Batch    2/   9] Loss:  1.25e-03\n",
      "[Epoch   33/ 100] [Batch    3/   9] Loss:  1.51e-03\n",
      "[Epoch   33/ 100] [Batch    4/   9] Loss:  1.89e-03\n",
      "[Epoch   33/ 100] [Batch    5/   9] Loss:  1.40e-03\n",
      "[Epoch   33/ 100] [Batch    6/   9] Loss:  1.73e-03\n",
      "[Epoch   33/ 100] [Batch    7/   9] Loss:  1.56e-03\n",
      "[Epoch   33/ 100] [Batch    8/   9] Loss:  1.70e-03\n",
      "[Epoch   33/ 100] [Batch    9/   9] Loss:  2.64e-03\n",
      "[Epoch   34/ 100] [Batch    1/   9] Loss:  1.67e-03\n",
      "[Epoch   34/ 100] [Batch    2/   9] Loss:  1.37e-03\n",
      "[Epoch   34/ 100] [Batch    3/   9] Loss:  1.73e-03\n",
      "[Epoch   34/ 100] [Batch    4/   9] Loss:  1.99e-03\n",
      "[Epoch   34/ 100] [Batch    5/   9] Loss:  1.68e-03\n",
      "[Epoch   34/ 100] [Batch    6/   9] Loss:  1.95e-03\n",
      "[Epoch   34/ 100] [Batch    7/   9] Loss:  1.69e-03\n",
      "[Epoch   34/ 100] [Batch    8/   9] Loss:  1.51e-03\n",
      "[Epoch   34/ 100] [Batch    9/   9] Loss:  1.05e-03\n",
      "[Epoch   35/ 100] [Batch    1/   9] Loss:  2.25e-03\n",
      "[Epoch   35/ 100] [Batch    2/   9] Loss:  1.54e-03\n",
      "[Epoch   35/ 100] [Batch    3/   9] Loss:  1.72e-03\n",
      "[Epoch   35/ 100] [Batch    4/   9] Loss:  1.58e-03\n",
      "[Epoch   35/ 100] [Batch    5/   9] Loss:  1.57e-03\n",
      "[Epoch   35/ 100] [Batch    6/   9] Loss:  1.55e-03\n",
      "[Epoch   35/ 100] [Batch    7/   9] Loss:  1.54e-03\n",
      "[Epoch   35/ 100] [Batch    8/   9] Loss:  1.54e-03\n",
      "[Epoch   35/ 100] [Batch    9/   9] Loss:  1.70e-03\n",
      "[Epoch   36/ 100] [Batch    1/   9] Loss:  1.74e-03\n",
      "[Epoch   36/ 100] [Batch    2/   9] Loss:  1.34e-03\n",
      "[Epoch   36/ 100] [Batch    3/   9] Loss:  1.64e-03\n",
      "[Epoch   36/ 100] [Batch    4/   9] Loss:  2.01e-03\n",
      "[Epoch   36/ 100] [Batch    5/   9] Loss:  1.57e-03\n",
      "[Epoch   36/ 100] [Batch    6/   9] Loss:  1.60e-03\n",
      "[Epoch   36/ 100] [Batch    7/   9] Loss:  1.77e-03\n",
      "[Epoch   36/ 100] [Batch    8/   9] Loss:  1.56e-03\n",
      "[Epoch   36/ 100] [Batch    9/   9] Loss:  1.83e-03\n",
      "[Epoch   37/ 100] [Batch    1/   9] Loss:  1.90e-03\n",
      "[Epoch   37/ 100] [Batch    2/   9] Loss:  1.62e-03\n",
      "[Epoch   37/ 100] [Batch    3/   9] Loss:  1.75e-03\n",
      "[Epoch   37/ 100] [Batch    4/   9] Loss:  1.46e-03\n",
      "[Epoch   37/ 100] [Batch    5/   9] Loss:  1.71e-03\n",
      "[Epoch   37/ 100] [Batch    6/   9] Loss:  1.22e-03\n",
      "[Epoch   37/ 100] [Batch    7/   9] Loss:  1.85e-03\n",
      "[Epoch   37/ 100] [Batch    8/   9] Loss:  1.88e-03\n",
      "[Epoch   37/ 100] [Batch    9/   9] Loss:  1.31e-03\n",
      "[Epoch   38/ 100] [Batch    1/   9] Loss:  1.65e-03\n",
      "[Epoch   38/ 100] [Batch    2/   9] Loss:  1.55e-03\n",
      "[Epoch   38/ 100] [Batch    3/   9] Loss:  1.53e-03\n",
      "[Epoch   38/ 100] [Batch    4/   9] Loss:  1.88e-03\n",
      "[Epoch   38/ 100] [Batch    5/   9] Loss:  1.47e-03\n",
      "[Epoch   38/ 100] [Batch    6/   9] Loss:  1.53e-03\n",
      "[Epoch   38/ 100] [Batch    7/   9] Loss:  2.05e-03\n",
      "[Epoch   38/ 100] [Batch    8/   9] Loss:  1.82e-03\n",
      "[Epoch   38/ 100] [Batch    9/   9] Loss:  1.07e-03\n",
      "[Epoch   39/ 100] [Batch    1/   9] Loss:  1.62e-03\n",
      "[Epoch   39/ 100] [Batch    2/   9] Loss:  1.29e-03\n",
      "[Epoch   39/ 100] [Batch    3/   9] Loss:  1.63e-03\n",
      "[Epoch   39/ 100] [Batch    4/   9] Loss:  1.70e-03\n",
      "[Epoch   39/ 100] [Batch    5/   9] Loss:  1.97e-03\n",
      "[Epoch   39/ 100] [Batch    6/   9] Loss:  1.85e-03\n",
      "[Epoch   39/ 100] [Batch    7/   9] Loss:  1.39e-03\n",
      "[Epoch   39/ 100] [Batch    8/   9] Loss:  1.94e-03\n",
      "[Epoch   39/ 100] [Batch    9/   9] Loss:  1.26e-03\n",
      "[Epoch   40/ 100] [Batch    1/   9] Loss:  1.59e-03\n",
      "[Epoch   40/ 100] [Batch    2/   9] Loss:  1.40e-03\n",
      "[Epoch   40/ 100] [Batch    3/   9] Loss:  1.56e-03\n",
      "[Epoch   40/ 100] [Batch    4/   9] Loss:  1.60e-03\n",
      "[Epoch   40/ 100] [Batch    5/   9] Loss:  1.82e-03\n",
      "[Epoch   40/ 100] [Batch    6/   9] Loss:  1.98e-03\n",
      "[Epoch   40/ 100] [Batch    7/   9] Loss:  1.57e-03\n",
      "[Epoch   40/ 100] [Batch    8/   9] Loss:  1.33e-03\n",
      "[Epoch   40/ 100] [Batch    9/   9] Loss:  2.96e-03\n",
      "[Epoch   41/ 100] [Batch    1/   9] Loss:  1.62e-03\n",
      "[Epoch   41/ 100] [Batch    2/   9] Loss:  1.56e-03\n",
      "[Epoch   41/ 100] [Batch    3/   9] Loss:  1.83e-03\n",
      "[Epoch   41/ 100] [Batch    4/   9] Loss:  1.80e-03\n",
      "[Epoch   41/ 100] [Batch    5/   9] Loss:  1.60e-03\n",
      "[Epoch   41/ 100] [Batch    6/   9] Loss:  1.67e-03\n",
      "[Epoch   41/ 100] [Batch    7/   9] Loss:  1.61e-03\n",
      "[Epoch   41/ 100] [Batch    8/   9] Loss:  1.79e-03\n",
      "[Epoch   41/ 100] [Batch    9/   9] Loss:  1.14e-03\n",
      "[Epoch   42/ 100] [Batch    1/   9] Loss:  1.53e-03\n",
      "[Epoch   42/ 100] [Batch    2/   9] Loss:  1.67e-03\n",
      "[Epoch   42/ 100] [Batch    3/   9] Loss:  1.54e-03\n",
      "[Epoch   42/ 100] [Batch    4/   9] Loss:  1.69e-03\n",
      "[Epoch   42/ 100] [Batch    5/   9] Loss:  1.77e-03\n",
      "[Epoch   42/ 100] [Batch    6/   9] Loss:  1.80e-03\n",
      "[Epoch   42/ 100] [Batch    7/   9] Loss:  1.80e-03\n",
      "[Epoch   42/ 100] [Batch    8/   9] Loss:  1.54e-03\n",
      "[Epoch   42/ 100] [Batch    9/   9] Loss:  1.43e-03\n",
      "[Epoch   43/ 100] [Batch    1/   9] Loss:  1.43e-03\n",
      "[Epoch   43/ 100] [Batch    2/   9] Loss:  1.94e-03\n",
      "[Epoch   43/ 100] [Batch    3/   9] Loss:  1.85e-03\n",
      "[Epoch   43/ 100] [Batch    4/   9] Loss:  2.04e-03\n",
      "[Epoch   43/ 100] [Batch    5/   9] Loss:  1.47e-03\n",
      "[Epoch   43/ 100] [Batch    6/   9] Loss:  1.51e-03\n",
      "[Epoch   43/ 100] [Batch    7/   9] Loss:  1.25e-03\n",
      "[Epoch   43/ 100] [Batch    8/   9] Loss:  1.88e-03\n",
      "[Epoch   43/ 100] [Batch    9/   9] Loss:  1.47e-03\n",
      "[Epoch   44/ 100] [Batch    1/   9] Loss:  1.65e-03\n",
      "[Epoch   44/ 100] [Batch    2/   9] Loss:  1.74e-03\n",
      "[Epoch   44/ 100] [Batch    3/   9] Loss:  1.50e-03\n",
      "[Epoch   44/ 100] [Batch    4/   9] Loss:  1.69e-03\n",
      "[Epoch   44/ 100] [Batch    5/   9] Loss:  1.53e-03\n",
      "[Epoch   44/ 100] [Batch    6/   9] Loss:  1.79e-03\n",
      "[Epoch   44/ 100] [Batch    7/   9] Loss:  1.70e-03\n",
      "[Epoch   44/ 100] [Batch    8/   9] Loss:  1.64e-03\n",
      "[Epoch   44/ 100] [Batch    9/   9] Loss:  1.73e-03\n",
      "[Epoch   45/ 100] [Batch    1/   9] Loss:  2.04e-03\n",
      "[Epoch   45/ 100] [Batch    2/   9] Loss:  1.45e-03\n",
      "[Epoch   45/ 100] [Batch    3/   9] Loss:  1.67e-03\n",
      "[Epoch   45/ 100] [Batch    4/   9] Loss:  1.26e-03\n",
      "[Epoch   45/ 100] [Batch    5/   9] Loss:  1.81e-03\n",
      "[Epoch   45/ 100] [Batch    6/   9] Loss:  1.54e-03\n",
      "[Epoch   45/ 100] [Batch    7/   9] Loss:  1.80e-03\n",
      "[Epoch   45/ 100] [Batch    8/   9] Loss:  1.63e-03\n",
      "[Epoch   45/ 100] [Batch    9/   9] Loss:  1.90e-03\n",
      "[Epoch   46/ 100] [Batch    1/   9] Loss:  1.64e-03\n",
      "[Epoch   46/ 100] [Batch    2/   9] Loss:  1.76e-03\n",
      "[Epoch   46/ 100] [Batch    3/   9] Loss:  1.70e-03\n",
      "[Epoch   46/ 100] [Batch    4/   9] Loss:  1.51e-03\n",
      "[Epoch   46/ 100] [Batch    5/   9] Loss:  1.72e-03\n",
      "[Epoch   46/ 100] [Batch    6/   9] Loss:  1.48e-03\n",
      "[Epoch   46/ 100] [Batch    7/   9] Loss:  1.66e-03\n",
      "[Epoch   46/ 100] [Batch    8/   9] Loss:  1.84e-03\n",
      "[Epoch   46/ 100] [Batch    9/   9] Loss:  1.62e-03\n",
      "[Epoch   47/ 100] [Batch    1/   9] Loss:  1.98e-03\n",
      "[Epoch   47/ 100] [Batch    2/   9] Loss:  1.54e-03\n",
      "[Epoch   47/ 100] [Batch    3/   9] Loss:  1.53e-03\n",
      "[Epoch   47/ 100] [Batch    4/   9] Loss:  1.42e-03\n",
      "[Epoch   47/ 100] [Batch    5/   9] Loss:  2.22e-03\n",
      "[Epoch   47/ 100] [Batch    6/   9] Loss:  1.43e-03\n",
      "[Epoch   47/ 100] [Batch    7/   9] Loss:  1.57e-03\n",
      "[Epoch   47/ 100] [Batch    8/   9] Loss:  1.76e-03\n",
      "[Epoch   47/ 100] [Batch    9/   9] Loss:  1.55e-03\n",
      "[Epoch   48/ 100] [Batch    1/   9] Loss:  1.26e-03\n",
      "[Epoch   48/ 100] [Batch    2/   9] Loss:  1.61e-03\n",
      "[Epoch   48/ 100] [Batch    3/   9] Loss:  1.67e-03\n",
      "[Epoch   48/ 100] [Batch    4/   9] Loss:  2.07e-03\n",
      "[Epoch   48/ 100] [Batch    5/   9] Loss:  1.67e-03\n",
      "[Epoch   48/ 100] [Batch    6/   9] Loss:  1.68e-03\n",
      "[Epoch   48/ 100] [Batch    7/   9] Loss:  1.82e-03\n",
      "[Epoch   48/ 100] [Batch    8/   9] Loss:  1.67e-03\n",
      "[Epoch   48/ 100] [Batch    9/   9] Loss:  1.22e-03\n",
      "[Epoch   49/ 100] [Batch    1/   9] Loss:  1.57e-03\n",
      "[Epoch   49/ 100] [Batch    2/   9] Loss:  1.53e-03\n",
      "[Epoch   49/ 100] [Batch    3/   9] Loss:  1.29e-03\n",
      "[Epoch   49/ 100] [Batch    4/   9] Loss:  1.87e-03\n",
      "[Epoch   49/ 100] [Batch    5/   9] Loss:  1.78e-03\n",
      "[Epoch   49/ 100] [Batch    6/   9] Loss:  2.03e-03\n",
      "[Epoch   49/ 100] [Batch    7/   9] Loss:  1.50e-03\n",
      "[Epoch   49/ 100] [Batch    8/   9] Loss:  1.74e-03\n",
      "[Epoch   49/ 100] [Batch    9/   9] Loss:  1.72e-03\n",
      "[Epoch   50/ 100] [Batch    1/   9] Loss:  1.96e-03\n",
      "[Epoch   50/ 100] [Batch    2/   9] Loss:  1.54e-03\n",
      "[Epoch   50/ 100] [Batch    3/   9] Loss:  1.39e-03\n",
      "[Epoch   50/ 100] [Batch    4/   9] Loss:  1.43e-03\n",
      "[Epoch   50/ 100] [Batch    5/   9] Loss:  1.51e-03\n",
      "[Epoch   50/ 100] [Batch    6/   9] Loss:  1.85e-03\n",
      "[Epoch   50/ 100] [Batch    7/   9] Loss:  1.68e-03\n",
      "[Epoch   50/ 100] [Batch    8/   9] Loss:  1.66e-03\n",
      "[Epoch   50/ 100] [Batch    9/   9] Loss:  2.44e-03\n",
      "[Epoch   51/ 100] [Batch    1/   9] Loss:  1.86e-03\n",
      "[Epoch   51/ 100] [Batch    2/   9] Loss:  1.78e-03\n",
      "[Epoch   51/ 100] [Batch    3/   9] Loss:  1.85e-03\n",
      "[Epoch   51/ 100] [Batch    4/   9] Loss:  1.44e-03\n",
      "[Epoch   51/ 100] [Batch    5/   9] Loss:  1.57e-03\n",
      "[Epoch   51/ 100] [Batch    6/   9] Loss:  1.38e-03\n",
      "[Epoch   51/ 100] [Batch    7/   9] Loss:  1.62e-03\n",
      "[Epoch   51/ 100] [Batch    8/   9] Loss:  1.53e-03\n",
      "[Epoch   51/ 100] [Batch    9/   9] Loss:  2.39e-03\n",
      "[Epoch   52/ 100] [Batch    1/   9] Loss:  1.49e-03\n",
      "[Epoch   52/ 100] [Batch    2/   9] Loss:  1.40e-03\n",
      "[Epoch   52/ 100] [Batch    3/   9] Loss:  2.06e-03\n",
      "[Epoch   52/ 100] [Batch    4/   9] Loss:  1.48e-03\n",
      "[Epoch   52/ 100] [Batch    5/   9] Loss:  1.69e-03\n",
      "[Epoch   52/ 100] [Batch    6/   9] Loss:  1.69e-03\n",
      "[Epoch   52/ 100] [Batch    7/   9] Loss:  1.83e-03\n",
      "[Epoch   52/ 100] [Batch    8/   9] Loss:  1.72e-03\n",
      "[Epoch   52/ 100] [Batch    9/   9] Loss:  1.62e-03\n",
      "[Epoch   53/ 100] [Batch    1/   9] Loss:  1.75e-03\n",
      "[Epoch   53/ 100] [Batch    2/   9] Loss:  1.86e-03\n",
      "[Epoch   53/ 100] [Batch    3/   9] Loss:  1.94e-03\n",
      "[Epoch   53/ 100] [Batch    4/   9] Loss:  1.63e-03\n",
      "[Epoch   53/ 100] [Batch    5/   9] Loss:  1.44e-03\n",
      "[Epoch   53/ 100] [Batch    6/   9] Loss:  1.91e-03\n",
      "[Epoch   53/ 100] [Batch    7/   9] Loss:  1.40e-03\n",
      "[Epoch   53/ 100] [Batch    8/   9] Loss:  1.47e-03\n",
      "[Epoch   53/ 100] [Batch    9/   9] Loss:  1.46e-03\n",
      "[Epoch   54/ 100] [Batch    1/   9] Loss:  1.42e-03\n",
      "[Epoch   54/ 100] [Batch    2/   9] Loss:  1.88e-03\n",
      "[Epoch   54/ 100] [Batch    3/   9] Loss:  1.68e-03\n",
      "[Epoch   54/ 100] [Batch    4/   9] Loss:  1.65e-03\n",
      "[Epoch   54/ 100] [Batch    5/   9] Loss:  1.93e-03\n",
      "[Epoch   54/ 100] [Batch    6/   9] Loss:  1.44e-03\n",
      "[Epoch   54/ 100] [Batch    7/   9] Loss:  1.52e-03\n",
      "[Epoch   54/ 100] [Batch    8/   9] Loss:  1.75e-03\n",
      "[Epoch   54/ 100] [Batch    9/   9] Loss:  1.75e-03\n",
      "[Epoch   55/ 100] [Batch    1/   9] Loss:  1.73e-03\n",
      "[Epoch   55/ 100] [Batch    2/   9] Loss:  1.79e-03\n",
      "[Epoch   55/ 100] [Batch    3/   9] Loss:  1.59e-03\n",
      "[Epoch   55/ 100] [Batch    4/   9] Loss:  1.58e-03\n",
      "[Epoch   55/ 100] [Batch    5/   9] Loss:  1.94e-03\n",
      "[Epoch   55/ 100] [Batch    6/   9] Loss:  1.52e-03\n",
      "[Epoch   55/ 100] [Batch    7/   9] Loss:  1.57e-03\n",
      "[Epoch   55/ 100] [Batch    8/   9] Loss:  1.64e-03\n",
      "[Epoch   55/ 100] [Batch    9/   9] Loss:  1.60e-03\n",
      "[Epoch   56/ 100] [Batch    1/   9] Loss:  2.04e-03\n",
      "[Epoch   56/ 100] [Batch    2/   9] Loss:  1.65e-03\n",
      "[Epoch   56/ 100] [Batch    3/   9] Loss:  1.36e-03\n",
      "[Epoch   56/ 100] [Batch    4/   9] Loss:  1.32e-03\n",
      "[Epoch   56/ 100] [Batch    5/   9] Loss:  1.71e-03\n",
      "[Epoch   56/ 100] [Batch    6/   9] Loss:  1.50e-03\n",
      "[Epoch   56/ 100] [Batch    7/   9] Loss:  1.68e-03\n",
      "[Epoch   56/ 100] [Batch    8/   9] Loss:  1.63e-03\n",
      "[Epoch   56/ 100] [Batch    9/   9] Loss:  2.90e-03\n",
      "[Epoch   57/ 100] [Batch    1/   9] Loss:  1.60e-03\n",
      "[Epoch   57/ 100] [Batch    2/   9] Loss:  1.55e-03\n",
      "[Epoch   57/ 100] [Batch    3/   9] Loss:  1.72e-03\n",
      "[Epoch   57/ 100] [Batch    4/   9] Loss:  1.51e-03\n",
      "[Epoch   57/ 100] [Batch    5/   9] Loss:  2.06e-03\n",
      "[Epoch   57/ 100] [Batch    6/   9] Loss:  1.83e-03\n",
      "[Epoch   57/ 100] [Batch    7/   9] Loss:  1.24e-03\n",
      "[Epoch   57/ 100] [Batch    8/   9] Loss:  1.75e-03\n",
      "[Epoch   57/ 100] [Batch    9/   9] Loss:  1.86e-03\n",
      "[Epoch   58/ 100] [Batch    1/   9] Loss:  1.40e-03\n",
      "[Epoch   58/ 100] [Batch    2/   9] Loss:  1.70e-03\n",
      "[Epoch   58/ 100] [Batch    3/   9] Loss:  1.70e-03\n",
      "[Epoch   58/ 100] [Batch    4/   9] Loss:  1.79e-03\n",
      "[Epoch   58/ 100] [Batch    5/   9] Loss:  1.70e-03\n",
      "[Epoch   58/ 100] [Batch    6/   9] Loss:  1.65e-03\n",
      "[Epoch   58/ 100] [Batch    7/   9] Loss:  1.44e-03\n",
      "[Epoch   58/ 100] [Batch    8/   9] Loss:  1.76e-03\n",
      "[Epoch   58/ 100] [Batch    9/   9] Loss:  2.08e-03\n",
      "[Epoch   59/ 100] [Batch    1/   9] Loss:  1.67e-03\n",
      "[Epoch   59/ 100] [Batch    2/   9] Loss:  1.85e-03\n",
      "[Epoch   59/ 100] [Batch    3/   9] Loss:  1.79e-03\n",
      "[Epoch   59/ 100] [Batch    4/   9] Loss:  1.78e-03\n",
      "[Epoch   59/ 100] [Batch    5/   9] Loss:  1.44e-03\n",
      "[Epoch   59/ 100] [Batch    6/   9] Loss:  1.19e-03\n",
      "[Epoch   59/ 100] [Batch    7/   9] Loss:  1.73e-03\n",
      "[Epoch   59/ 100] [Batch    8/   9] Loss:  1.70e-03\n",
      "[Epoch   59/ 100] [Batch    9/   9] Loss:  1.99e-03\n",
      "[Epoch   60/ 100] [Batch    1/   9] Loss:  1.56e-03\n",
      "[Epoch   60/ 100] [Batch    2/   9] Loss:  1.48e-03\n",
      "[Epoch   60/ 100] [Batch    3/   9] Loss:  1.54e-03\n",
      "[Epoch   60/ 100] [Batch    4/   9] Loss:  1.87e-03\n",
      "[Epoch   60/ 100] [Batch    5/   9] Loss:  1.50e-03\n",
      "[Epoch   60/ 100] [Batch    6/   9] Loss:  1.65e-03\n",
      "[Epoch   60/ 100] [Batch    7/   9] Loss:  1.83e-03\n",
      "[Epoch   60/ 100] [Batch    8/   9] Loss:  2.16e-03\n",
      "[Epoch   60/ 100] [Batch    9/   9] Loss:  8.76e-04\n",
      "[Epoch   61/ 100] [Batch    1/   9] Loss:  1.27e-03\n",
      "[Epoch   61/ 100] [Batch    2/   9] Loss:  1.86e-03\n",
      "[Epoch   61/ 100] [Batch    3/   9] Loss:  1.39e-03\n",
      "[Epoch   61/ 100] [Batch    4/   9] Loss:  1.78e-03\n",
      "[Epoch   61/ 100] [Batch    5/   9] Loss:  1.81e-03\n",
      "[Epoch   61/ 100] [Batch    6/   9] Loss:  1.75e-03\n",
      "[Epoch   61/ 100] [Batch    7/   9] Loss:  1.78e-03\n",
      "[Epoch   61/ 100] [Batch    8/   9] Loss:  1.65e-03\n",
      "[Epoch   61/ 100] [Batch    9/   9] Loss:  2.19e-03\n",
      "[Epoch   62/ 100] [Batch    1/   9] Loss:  1.62e-03\n",
      "[Epoch   62/ 100] [Batch    2/   9] Loss:  1.99e-03\n",
      "[Epoch   62/ 100] [Batch    3/   9] Loss:  1.44e-03\n",
      "[Epoch   62/ 100] [Batch    4/   9] Loss:  1.47e-03\n",
      "[Epoch   62/ 100] [Batch    5/   9] Loss:  1.80e-03\n",
      "[Epoch   62/ 100] [Batch    6/   9] Loss:  1.59e-03\n",
      "[Epoch   62/ 100] [Batch    7/   9] Loss:  1.72e-03\n",
      "[Epoch   62/ 100] [Batch    8/   9] Loss:  1.62e-03\n",
      "[Epoch   62/ 100] [Batch    9/   9] Loss:  2.02e-03\n",
      "[Epoch   63/ 100] [Batch    1/   9] Loss:  1.83e-03\n",
      "[Epoch   63/ 100] [Batch    2/   9] Loss:  1.74e-03\n",
      "[Epoch   63/ 100] [Batch    3/   9] Loss:  1.86e-03\n",
      "[Epoch   63/ 100] [Batch    4/   9] Loss:  1.22e-03\n",
      "[Epoch   63/ 100] [Batch    5/   9] Loss:  1.50e-03\n",
      "[Epoch   63/ 100] [Batch    6/   9] Loss:  1.40e-03\n",
      "[Epoch   63/ 100] [Batch    7/   9] Loss:  1.86e-03\n",
      "[Epoch   63/ 100] [Batch    8/   9] Loss:  1.86e-03\n",
      "[Epoch   63/ 100] [Batch    9/   9] Loss:  2.11e-03\n",
      "[Epoch   64/ 100] [Batch    1/   9] Loss:  1.23e-03\n",
      "[Epoch   64/ 100] [Batch    2/   9] Loss:  1.67e-03\n",
      "[Epoch   64/ 100] [Batch    3/   9] Loss:  1.49e-03\n",
      "[Epoch   64/ 100] [Batch    4/   9] Loss:  1.97e-03\n",
      "[Epoch   64/ 100] [Batch    5/   9] Loss:  1.92e-03\n",
      "[Epoch   64/ 100] [Batch    6/   9] Loss:  1.79e-03\n",
      "[Epoch   64/ 100] [Batch    7/   9] Loss:  1.91e-03\n",
      "[Epoch   64/ 100] [Batch    8/   9] Loss:  1.37e-03\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[Epoch   64/ 100] [Batch    9/   9] Loss:  1.94e-03\n",
      "[Epoch   65/ 100] [Batch    1/   9] Loss:  2.02e-03\n",
      "[Epoch   65/ 100] [Batch    2/   9] Loss:  1.98e-03\n",
      "[Epoch   65/ 100] [Batch    3/   9] Loss:  1.82e-03\n",
      "[Epoch   65/ 100] [Batch    4/   9] Loss:  1.69e-03\n",
      "[Epoch   65/ 100] [Batch    5/   9] Loss:  1.39e-03\n",
      "[Epoch   65/ 100] [Batch    6/   9] Loss:  1.26e-03\n",
      "[Epoch   65/ 100] [Batch    7/   9] Loss:  1.46e-03\n",
      "[Epoch   65/ 100] [Batch    8/   9] Loss:  1.89e-03\n",
      "[Epoch   65/ 100] [Batch    9/   9] Loss:  1.19e-03\n",
      "[Epoch   66/ 100] [Batch    1/   9] Loss:  1.83e-03\n",
      "[Epoch   66/ 100] [Batch    2/   9] Loss:  1.63e-03\n",
      "[Epoch   66/ 100] [Batch    3/   9] Loss:  1.49e-03\n",
      "[Epoch   66/ 100] [Batch    4/   9] Loss:  1.57e-03\n",
      "[Epoch   66/ 100] [Batch    5/   9] Loss:  1.83e-03\n",
      "[Epoch   66/ 100] [Batch    6/   9] Loss:  1.92e-03\n",
      "[Epoch   66/ 100] [Batch    7/   9] Loss:  1.63e-03\n",
      "[Epoch   66/ 100] [Batch    8/   9] Loss:  1.49e-03\n",
      "[Epoch   66/ 100] [Batch    9/   9] Loss:  1.33e-03\n",
      "[Epoch   67/ 100] [Batch    1/   9] Loss:  1.84e-03\n",
      "[Epoch   67/ 100] [Batch    2/   9] Loss:  1.80e-03\n",
      "[Epoch   67/ 100] [Batch    3/   9] Loss:  1.42e-03\n",
      "[Epoch   67/ 100] [Batch    4/   9] Loss:  1.59e-03\n",
      "[Epoch   67/ 100] [Batch    5/   9] Loss:  1.82e-03\n",
      "[Epoch   67/ 100] [Batch    6/   9] Loss:  1.64e-03\n",
      "[Epoch   67/ 100] [Batch    7/   9] Loss:  1.82e-03\n",
      "[Epoch   67/ 100] [Batch    8/   9] Loss:  1.59e-03\n",
      "[Epoch   67/ 100] [Batch    9/   9] Loss:  9.50e-04\n",
      "[Epoch   68/ 100] [Batch    1/   9] Loss:  1.58e-03\n",
      "[Epoch   68/ 100] [Batch    2/   9] Loss:  1.47e-03\n",
      "[Epoch   68/ 100] [Batch    3/   9] Loss:  1.72e-03\n",
      "[Epoch   68/ 100] [Batch    4/   9] Loss:  1.79e-03\n",
      "[Epoch   68/ 100] [Batch    5/   9] Loss:  1.89e-03\n",
      "[Epoch   68/ 100] [Batch    6/   9] Loss:  1.72e-03\n",
      "[Epoch   68/ 100] [Batch    7/   9] Loss:  1.89e-03\n",
      "[Epoch   68/ 100] [Batch    8/   9] Loss:  1.55e-03\n",
      "[Epoch   68/ 100] [Batch    9/   9] Loss:  1.34e-03\n",
      "[Epoch   69/ 100] [Batch    1/   9] Loss:  1.65e-03\n",
      "[Epoch   69/ 100] [Batch    2/   9] Loss:  2.10e-03\n",
      "[Epoch   69/ 100] [Batch    3/   9] Loss:  1.46e-03\n",
      "[Epoch   69/ 100] [Batch    4/   9] Loss:  1.53e-03\n",
      "[Epoch   69/ 100] [Batch    5/   9] Loss:  1.83e-03\n",
      "[Epoch   69/ 100] [Batch    6/   9] Loss:  1.59e-03\n",
      "[Epoch   69/ 100] [Batch    7/   9] Loss:  1.66e-03\n",
      "[Epoch   69/ 100] [Batch    8/   9] Loss:  1.68e-03\n",
      "[Epoch   69/ 100] [Batch    9/   9] Loss:  1.40e-03\n",
      "[Epoch   70/ 100] [Batch    1/   9] Loss:  1.84e-03\n",
      "[Epoch   70/ 100] [Batch    2/   9] Loss:  1.30e-03\n",
      "[Epoch   70/ 100] [Batch    3/   9] Loss:  1.50e-03\n",
      "[Epoch   70/ 100] [Batch    4/   9] Loss:  1.27e-03\n",
      "[Epoch   70/ 100] [Batch    5/   9] Loss:  1.88e-03\n",
      "[Epoch   70/ 100] [Batch    6/   9] Loss:  2.04e-03\n",
      "[Epoch   70/ 100] [Batch    7/   9] Loss:  1.61e-03\n",
      "[Epoch   70/ 100] [Batch    8/   9] Loss:  1.82e-03\n",
      "[Epoch   70/ 100] [Batch    9/   9] Loss:  1.74e-03\n",
      "[Epoch   71/ 100] [Batch    1/   9] Loss:  1.63e-03\n",
      "[Epoch   71/ 100] [Batch    2/   9] Loss:  1.85e-03\n",
      "[Epoch   71/ 100] [Batch    3/   9] Loss:  1.68e-03\n",
      "[Epoch   71/ 100] [Batch    4/   9] Loss:  1.64e-03\n",
      "[Epoch   71/ 100] [Batch    5/   9] Loss:  1.78e-03\n",
      "[Epoch   71/ 100] [Batch    6/   9] Loss:  1.36e-03\n",
      "[Epoch   71/ 100] [Batch    7/   9] Loss:  1.89e-03\n",
      "[Epoch   71/ 100] [Batch    8/   9] Loss:  1.48e-03\n",
      "[Epoch   71/ 100] [Batch    9/   9] Loss:  1.85e-03\n",
      "[Epoch   72/ 100] [Batch    1/   9] Loss:  1.80e-03\n",
      "[Epoch   72/ 100] [Batch    2/   9] Loss:  1.30e-03\n",
      "[Epoch   72/ 100] [Batch    3/   9] Loss:  1.43e-03\n",
      "[Epoch   72/ 100] [Batch    4/   9] Loss:  2.07e-03\n",
      "[Epoch   72/ 100] [Batch    5/   9] Loss:  1.70e-03\n",
      "[Epoch   72/ 100] [Batch    6/   9] Loss:  1.62e-03\n",
      "[Epoch   72/ 100] [Batch    7/   9] Loss:  1.69e-03\n",
      "[Epoch   72/ 100] [Batch    8/   9] Loss:  1.53e-03\n",
      "[Epoch   72/ 100] [Batch    9/   9] Loss:  2.19e-03\n",
      "[Epoch   73/ 100] [Batch    1/   9] Loss:  1.89e-03\n",
      "[Epoch   73/ 100] [Batch    2/   9] Loss:  1.74e-03\n",
      "[Epoch   73/ 100] [Batch    3/   9] Loss:  1.26e-03\n",
      "[Epoch   73/ 100] [Batch    4/   9] Loss:  1.54e-03\n",
      "[Epoch   73/ 100] [Batch    5/   9] Loss:  1.53e-03\n",
      "[Epoch   73/ 100] [Batch    6/   9] Loss:  2.11e-03\n",
      "[Epoch   73/ 100] [Batch    7/   9] Loss:  1.57e-03\n",
      "[Epoch   73/ 100] [Batch    8/   9] Loss:  1.71e-03\n",
      "[Epoch   73/ 100] [Batch    9/   9] Loss:  1.43e-03\n",
      "[Epoch   74/ 100] [Batch    1/   9] Loss:  1.56e-03\n",
      "[Epoch   74/ 100] [Batch    2/   9] Loss:  1.56e-03\n",
      "[Epoch   74/ 100] [Batch    3/   9] Loss:  1.87e-03\n",
      "[Epoch   74/ 100] [Batch    4/   9] Loss:  1.48e-03\n",
      "[Epoch   74/ 100] [Batch    5/   9] Loss:  1.80e-03\n",
      "[Epoch   74/ 100] [Batch    6/   9] Loss:  1.64e-03\n",
      "[Epoch   74/ 100] [Batch    7/   9] Loss:  1.52e-03\n",
      "[Epoch   74/ 100] [Batch    8/   9] Loss:  1.79e-03\n",
      "[Epoch   74/ 100] [Batch    9/   9] Loss:  1.88e-03\n",
      "[Epoch   75/ 100] [Batch    1/   9] Loss:  1.91e-03\n",
      "[Epoch   75/ 100] [Batch    2/   9] Loss:  1.68e-03\n",
      "[Epoch   75/ 100] [Batch    3/   9] Loss:  1.60e-03\n",
      "[Epoch   75/ 100] [Batch    4/   9] Loss:  1.42e-03\n",
      "[Epoch   75/ 100] [Batch    5/   9] Loss:  1.87e-03\n",
      "[Epoch   75/ 100] [Batch    6/   9] Loss:  1.71e-03\n",
      "[Epoch   75/ 100] [Batch    7/   9] Loss:  1.68e-03\n",
      "[Epoch   75/ 100] [Batch    8/   9] Loss:  1.35e-03\n",
      "[Epoch   75/ 100] [Batch    9/   9] Loss:  1.84e-03\n",
      "[Epoch   76/ 100] [Batch    1/   9] Loss:  1.63e-03\n",
      "[Epoch   76/ 100] [Batch    2/   9] Loss:  1.53e-03\n",
      "[Epoch   76/ 100] [Batch    3/   9] Loss:  1.89e-03\n",
      "[Epoch   76/ 100] [Batch    4/   9] Loss:  1.76e-03\n",
      "[Epoch   76/ 100] [Batch    5/   9] Loss:  1.58e-03\n",
      "[Epoch   76/ 100] [Batch    6/   9] Loss:  1.59e-03\n",
      "[Epoch   76/ 100] [Batch    7/   9] Loss:  1.43e-03\n",
      "[Epoch   76/ 100] [Batch    8/   9] Loss:  1.66e-03\n",
      "[Epoch   76/ 100] [Batch    9/   9] Loss:  2.38e-03\n",
      "[Epoch   77/ 100] [Batch    1/   9] Loss:  1.80e-03\n",
      "[Epoch   77/ 100] [Batch    2/   9] Loss:  1.40e-03\n",
      "[Epoch   77/ 100] [Batch    3/   9] Loss:  1.86e-03\n",
      "[Epoch   77/ 100] [Batch    4/   9] Loss:  1.58e-03\n",
      "[Epoch   77/ 100] [Batch    5/   9] Loss:  2.04e-03\n",
      "[Epoch   77/ 100] [Batch    6/   9] Loss:  1.55e-03\n",
      "[Epoch   77/ 100] [Batch    7/   9] Loss:  1.67e-03\n",
      "[Epoch   77/ 100] [Batch    8/   9] Loss:  1.53e-03\n",
      "[Epoch   77/ 100] [Batch    9/   9] Loss:  1.52e-03\n",
      "[Epoch   78/ 100] [Batch    1/   9] Loss:  1.96e-03\n",
      "[Epoch   78/ 100] [Batch    2/   9] Loss:  1.52e-03\n",
      "[Epoch   78/ 100] [Batch    3/   9] Loss:  1.55e-03\n",
      "[Epoch   78/ 100] [Batch    4/   9] Loss:  1.52e-03\n",
      "[Epoch   78/ 100] [Batch    5/   9] Loss:  1.88e-03\n",
      "[Epoch   78/ 100] [Batch    6/   9] Loss:  1.58e-03\n",
      "[Epoch   78/ 100] [Batch    7/   9] Loss:  1.60e-03\n",
      "[Epoch   78/ 100] [Batch    8/   9] Loss:  1.82e-03\n",
      "[Epoch   78/ 100] [Batch    9/   9] Loss:  1.50e-03\n",
      "[Epoch   79/ 100] [Batch    1/   9] Loss:  1.47e-03\n",
      "[Epoch   79/ 100] [Batch    2/   9] Loss:  1.34e-03\n",
      "[Epoch   79/ 100] [Batch    3/   9] Loss:  1.73e-03\n",
      "[Epoch   79/ 100] [Batch    4/   9] Loss:  1.80e-03\n",
      "[Epoch   79/ 100] [Batch    5/   9] Loss:  1.33e-03\n",
      "[Epoch   79/ 100] [Batch    6/   9] Loss:  1.79e-03\n",
      "[Epoch   79/ 100] [Batch    7/   9] Loss:  2.21e-03\n",
      "[Epoch   79/ 100] [Batch    8/   9] Loss:  1.76e-03\n",
      "[Epoch   79/ 100] [Batch    9/   9] Loss:  1.32e-03\n",
      "[Epoch   80/ 100] [Batch    1/   9] Loss:  1.42e-03\n",
      "[Epoch   80/ 100] [Batch    2/   9] Loss:  1.94e-03\n",
      "[Epoch   80/ 100] [Batch    3/   9] Loss:  1.50e-03\n",
      "[Epoch   80/ 100] [Batch    4/   9] Loss:  1.30e-03\n",
      "[Epoch   80/ 100] [Batch    5/   9] Loss:  1.44e-03\n",
      "[Epoch   80/ 100] [Batch    6/   9] Loss:  1.81e-03\n",
      "[Epoch   80/ 100] [Batch    7/   9] Loss:  2.04e-03\n",
      "[Epoch   80/ 100] [Batch    8/   9] Loss:  1.76e-03\n",
      "[Epoch   80/ 100] [Batch    9/   9] Loss:  1.94e-03\n",
      "[Epoch   81/ 100] [Batch    1/   9] Loss:  1.60e-03\n",
      "[Epoch   81/ 100] [Batch    2/   9] Loss:  1.67e-03\n",
      "[Epoch   81/ 100] [Batch    3/   9] Loss:  1.95e-03\n",
      "[Epoch   81/ 100] [Batch    4/   9] Loss:  1.90e-03\n",
      "[Epoch   81/ 100] [Batch    5/   9] Loss:  1.85e-03\n",
      "[Epoch   81/ 100] [Batch    6/   9] Loss:  1.38e-03\n",
      "[Epoch   81/ 100] [Batch    7/   9] Loss:  1.47e-03\n",
      "[Epoch   81/ 100] [Batch    8/   9] Loss:  1.47e-03\n",
      "[Epoch   81/ 100] [Batch    9/   9] Loss:  2.40e-03\n",
      "[Epoch   82/ 100] [Batch    1/   9] Loss:  1.89e-03\n",
      "[Epoch   82/ 100] [Batch    2/   9] Loss:  1.85e-03\n",
      "[Epoch   82/ 100] [Batch    3/   9] Loss:  1.87e-03\n",
      "[Epoch   82/ 100] [Batch    4/   9] Loss:  1.62e-03\n",
      "[Epoch   82/ 100] [Batch    5/   9] Loss:  1.58e-03\n",
      "[Epoch   82/ 100] [Batch    6/   9] Loss:  1.38e-03\n",
      "[Epoch   82/ 100] [Batch    7/   9] Loss:  1.72e-03\n",
      "[Epoch   82/ 100] [Batch    8/   9] Loss:  1.44e-03\n",
      "[Epoch   82/ 100] [Batch    9/   9] Loss:  1.80e-03\n",
      "[Epoch   83/ 100] [Batch    1/   9] Loss:  1.65e-03\n",
      "[Epoch   83/ 100] [Batch    2/   9] Loss:  1.53e-03\n",
      "[Epoch   83/ 100] [Batch    3/   9] Loss:  1.48e-03\n",
      "[Epoch   83/ 100] [Batch    4/   9] Loss:  1.70e-03\n",
      "[Epoch   83/ 100] [Batch    5/   9] Loss:  2.07e-03\n",
      "[Epoch   83/ 100] [Batch    6/   9] Loss:  1.88e-03\n",
      "[Epoch   83/ 100] [Batch    7/   9] Loss:  1.47e-03\n",
      "[Epoch   83/ 100] [Batch    8/   9] Loss:  1.62e-03\n",
      "[Epoch   83/ 100] [Batch    9/   9] Loss:  1.58e-03\n",
      "[Epoch   84/ 100] [Batch    1/   9] Loss:  1.90e-03\n",
      "[Epoch   84/ 100] [Batch    2/   9] Loss:  2.06e-03\n",
      "[Epoch   84/ 100] [Batch    3/   9] Loss:  1.30e-03\n",
      "[Epoch   84/ 100] [Batch    4/   9] Loss:  1.35e-03\n",
      "[Epoch   84/ 100] [Batch    5/   9] Loss:  1.69e-03\n",
      "[Epoch   84/ 100] [Batch    6/   9] Loss:  1.82e-03\n",
      "[Epoch   84/ 100] [Batch    7/   9] Loss:  1.70e-03\n",
      "[Epoch   84/ 100] [Batch    8/   9] Loss:  1.51e-03\n",
      "[Epoch   84/ 100] [Batch    9/   9] Loss:  1.84e-03\n",
      "[Epoch   85/ 100] [Batch    1/   9] Loss:  1.81e-03\n",
      "[Epoch   85/ 100] [Batch    2/   9] Loss:  1.46e-03\n",
      "[Epoch   85/ 100] [Batch    3/   9] Loss:  2.10e-03\n",
      "[Epoch   85/ 100] [Batch    4/   9] Loss:  1.20e-03\n",
      "[Epoch   85/ 100] [Batch    5/   9] Loss:  1.84e-03\n",
      "[Epoch   85/ 100] [Batch    6/   9] Loss:  1.91e-03\n",
      "[Epoch   85/ 100] [Batch    7/   9] Loss:  1.50e-03\n",
      "[Epoch   85/ 100] [Batch    8/   9] Loss:  1.75e-03\n",
      "[Epoch   85/ 100] [Batch    9/   9] Loss:  1.27e-03\n",
      "[Epoch   86/ 100] [Batch    1/   9] Loss:  1.42e-03\n",
      "[Epoch   86/ 100] [Batch    2/   9] Loss:  1.33e-03\n",
      "[Epoch   86/ 100] [Batch    3/   9] Loss:  1.64e-03\n",
      "[Epoch   86/ 100] [Batch    4/   9] Loss:  1.54e-03\n",
      "[Epoch   86/ 100] [Batch    5/   9] Loss:  1.59e-03\n",
      "[Epoch   86/ 100] [Batch    6/   9] Loss:  1.93e-03\n",
      "[Epoch   86/ 100] [Batch    7/   9] Loss:  1.88e-03\n",
      "[Epoch   86/ 100] [Batch    8/   9] Loss:  1.64e-03\n",
      "[Epoch   86/ 100] [Batch    9/   9] Loss:  2.68e-03\n",
      "[Epoch   87/ 100] [Batch    1/   9] Loss:  1.61e-03\n",
      "[Epoch   87/ 100] [Batch    2/   9] Loss:  1.79e-03\n",
      "[Epoch   87/ 100] [Batch    3/   9] Loss:  1.76e-03\n",
      "[Epoch   87/ 100] [Batch    4/   9] Loss:  1.83e-03\n",
      "[Epoch   87/ 100] [Batch    5/   9] Loss:  1.61e-03\n",
      "[Epoch   87/ 100] [Batch    6/   9] Loss:  1.61e-03\n",
      "[Epoch   87/ 100] [Batch    7/   9] Loss:  1.46e-03\n",
      "[Epoch   87/ 100] [Batch    8/   9] Loss:  1.80e-03\n",
      "[Epoch   87/ 100] [Batch    9/   9] Loss:  2.24e-03\n",
      "[Epoch   88/ 100] [Batch    1/   9] Loss:  1.83e-03\n",
      "[Epoch   88/ 100] [Batch    2/   9] Loss:  1.58e-03\n",
      "[Epoch   88/ 100] [Batch    3/   9] Loss:  1.70e-03\n",
      "[Epoch   88/ 100] [Batch    4/   9] Loss:  1.81e-03\n",
      "[Epoch   88/ 100] [Batch    5/   9] Loss:  1.47e-03\n",
      "[Epoch   88/ 100] [Batch    6/   9] Loss:  1.80e-03\n",
      "[Epoch   88/ 100] [Batch    7/   9] Loss:  1.73e-03\n",
      "[Epoch   88/ 100] [Batch    8/   9] Loss:  1.71e-03\n",
      "[Epoch   88/ 100] [Batch    9/   9] Loss:  1.42e-03\n",
      "[Epoch   89/ 100] [Batch    1/   9] Loss:  1.82e-03\n",
      "[Epoch   89/ 100] [Batch    2/   9] Loss:  1.23e-03\n",
      "[Epoch   89/ 100] [Batch    3/   9] Loss:  1.90e-03\n",
      "[Epoch   89/ 100] [Batch    4/   9] Loss:  1.53e-03\n",
      "[Epoch   89/ 100] [Batch    5/   9] Loss:  1.43e-03\n",
      "[Epoch   89/ 100] [Batch    6/   9] Loss:  1.76e-03\n",
      "[Epoch   89/ 100] [Batch    7/   9] Loss:  1.66e-03\n",
      "[Epoch   89/ 100] [Batch    8/   9] Loss:  1.98e-03\n",
      "[Epoch   89/ 100] [Batch    9/   9] Loss:  1.68e-03\n",
      "[Epoch   90/ 100] [Batch    1/   9] Loss:  1.80e-03\n",
      "[Epoch   90/ 100] [Batch    2/   9] Loss:  1.28e-03\n",
      "[Epoch   90/ 100] [Batch    3/   9] Loss:  2.20e-03\n",
      "[Epoch   90/ 100] [Batch    4/   9] Loss:  1.64e-03\n",
      "[Epoch   90/ 100] [Batch    5/   9] Loss:  1.63e-03\n",
      "[Epoch   90/ 100] [Batch    6/   9] Loss:  1.71e-03\n",
      "[Epoch   90/ 100] [Batch    7/   9] Loss:  1.43e-03\n",
      "[Epoch   90/ 100] [Batch    8/   9] Loss:  1.61e-03\n",
      "[Epoch   90/ 100] [Batch    9/   9] Loss:  1.73e-03\n",
      "[Epoch   91/ 100] [Batch    1/   9] Loss:  1.56e-03\n",
      "[Epoch   91/ 100] [Batch    2/   9] Loss:  1.73e-03\n",
      "[Epoch   91/ 100] [Batch    3/   9] Loss:  1.54e-03\n",
      "[Epoch   91/ 100] [Batch    4/   9] Loss:  1.52e-03\n",
      "[Epoch   91/ 100] [Batch    5/   9] Loss:  1.92e-03\n",
      "[Epoch   91/ 100] [Batch    6/   9] Loss:  1.89e-03\n",
      "[Epoch   91/ 100] [Batch    7/   9] Loss:  1.60e-03\n",
      "[Epoch   91/ 100] [Batch    8/   9] Loss:  1.58e-03\n",
      "[Epoch   91/ 100] [Batch    9/   9] Loss:  1.60e-03\n",
      "[Epoch   92/ 100] [Batch    1/   9] Loss:  1.50e-03\n",
      "[Epoch   92/ 100] [Batch    2/   9] Loss:  1.60e-03\n",
      "[Epoch   92/ 100] [Batch    3/   9] Loss:  1.72e-03\n",
      "[Epoch   92/ 100] [Batch    4/   9] Loss:  1.59e-03\n",
      "[Epoch   92/ 100] [Batch    5/   9] Loss:  1.93e-03\n",
      "[Epoch   92/ 100] [Batch    6/   9] Loss:  1.71e-03\n",
      "[Epoch   92/ 100] [Batch    7/   9] Loss:  1.78e-03\n",
      "[Epoch   92/ 100] [Batch    8/   9] Loss:  1.22e-03\n",
      "[Epoch   92/ 100] [Batch    9/   9] Loss:  2.42e-03\n",
      "[Epoch   93/ 100] [Batch    1/   9] Loss:  1.53e-03\n",
      "[Epoch   93/ 100] [Batch    2/   9] Loss:  1.79e-03\n",
      "[Epoch   93/ 100] [Batch    3/   9] Loss:  1.92e-03\n",
      "[Epoch   93/ 100] [Batch    4/   9] Loss:  1.57e-03\n",
      "[Epoch   93/ 100] [Batch    5/   9] Loss:  1.83e-03\n",
      "[Epoch   93/ 100] [Batch    6/   9] Loss:  1.48e-03\n",
      "[Epoch   93/ 100] [Batch    7/   9] Loss:  1.25e-03\n",
      "[Epoch   93/ 100] [Batch    8/   9] Loss:  1.99e-03\n",
      "[Epoch   93/ 100] [Batch    9/   9] Loss:  1.77e-03\n",
      "[Epoch   94/ 100] [Batch    1/   9] Loss:  1.63e-03\n",
      "[Epoch   94/ 100] [Batch    2/   9] Loss:  1.72e-03\n",
      "[Epoch   94/ 100] [Batch    3/   9] Loss:  1.84e-03\n",
      "[Epoch   94/ 100] [Batch    4/   9] Loss:  1.70e-03\n",
      "[Epoch   94/ 100] [Batch    5/   9] Loss:  1.46e-03\n",
      "[Epoch   94/ 100] [Batch    6/   9] Loss:  1.45e-03\n",
      "[Epoch   94/ 100] [Batch    7/   9] Loss:  1.78e-03\n",
      "[Epoch   94/ 100] [Batch    8/   9] Loss:  1.73e-03\n",
      "[Epoch   94/ 100] [Batch    9/   9] Loss:  1.85e-03\n",
      "[Epoch   95/ 100] [Batch    1/   9] Loss:  1.99e-03\n",
      "[Epoch   95/ 100] [Batch    2/   9] Loss:  1.87e-03\n",
      "[Epoch   95/ 100] [Batch    3/   9] Loss:  1.48e-03\n",
      "[Epoch   95/ 100] [Batch    4/   9] Loss:  1.86e-03\n",
      "[Epoch   95/ 100] [Batch    5/   9] Loss:  1.62e-03\n",
      "[Epoch   95/ 100] [Batch    6/   9] Loss:  1.41e-03\n",
      "[Epoch   95/ 100] [Batch    7/   9] Loss:  1.50e-03\n",
      "[Epoch   95/ 100] [Batch    8/   9] Loss:  1.55e-03\n",
      "[Epoch   95/ 100] [Batch    9/   9] Loss:  1.77e-03\n",
      "[Epoch   96/ 100] [Batch    1/   9] Loss:  1.86e-03\n",
      "[Epoch   96/ 100] [Batch    2/   9] Loss:  1.69e-03\n",
      "[Epoch   96/ 100] [Batch    3/   9] Loss:  1.76e-03\n",
      "[Epoch   96/ 100] [Batch    4/   9] Loss:  1.51e-03\n",
      "[Epoch   96/ 100] [Batch    5/   9] Loss:  1.51e-03\n",
      "[Epoch   96/ 100] [Batch    6/   9] Loss:  1.70e-03\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[Epoch   96/ 100] [Batch    7/   9] Loss:  1.85e-03\n",
      "[Epoch   96/ 100] [Batch    8/   9] Loss:  1.46e-03\n",
      "[Epoch   96/ 100] [Batch    9/   9] Loss:  1.52e-03\n",
      "[Epoch   97/ 100] [Batch    1/   9] Loss:  1.70e-03\n",
      "[Epoch   97/ 100] [Batch    2/   9] Loss:  1.87e-03\n",
      "[Epoch   97/ 100] [Batch    3/   9] Loss:  1.80e-03\n",
      "[Epoch   97/ 100] [Batch    4/   9] Loss:  1.77e-03\n",
      "[Epoch   97/ 100] [Batch    5/   9] Loss:  1.39e-03\n",
      "[Epoch   97/ 100] [Batch    6/   9] Loss:  1.46e-03\n",
      "[Epoch   97/ 100] [Batch    7/   9] Loss:  1.61e-03\n",
      "[Epoch   97/ 100] [Batch    8/   9] Loss:  1.74e-03\n",
      "[Epoch   97/ 100] [Batch    9/   9] Loss:  1.53e-03\n",
      "[Epoch   98/ 100] [Batch    1/   9] Loss:  1.70e-03\n",
      "[Epoch   98/ 100] [Batch    2/   9] Loss:  1.53e-03\n",
      "[Epoch   98/ 100] [Batch    3/   9] Loss:  1.54e-03\n",
      "[Epoch   98/ 100] [Batch    4/   9] Loss:  1.51e-03\n",
      "[Epoch   98/ 100] [Batch    5/   9] Loss:  1.69e-03\n",
      "[Epoch   98/ 100] [Batch    6/   9] Loss:  1.74e-03\n",
      "[Epoch   98/ 100] [Batch    7/   9] Loss:  2.08e-03\n",
      "[Epoch   98/ 100] [Batch    8/   9] Loss:  1.67e-03\n",
      "[Epoch   98/ 100] [Batch    9/   9] Loss:  1.33e-03\n",
      "[Epoch   99/ 100] [Batch    1/   9] Loss:  1.49e-03\n",
      "[Epoch   99/ 100] [Batch    2/   9] Loss:  1.58e-03\n",
      "[Epoch   99/ 100] [Batch    3/   9] Loss:  1.67e-03\n",
      "[Epoch   99/ 100] [Batch    4/   9] Loss:  1.79e-03\n",
      "[Epoch   99/ 100] [Batch    5/   9] Loss:  1.62e-03\n",
      "[Epoch   99/ 100] [Batch    6/   9] Loss:  1.82e-03\n",
      "[Epoch   99/ 100] [Batch    7/   9] Loss:  1.80e-03\n",
      "[Epoch   99/ 100] [Batch    8/   9] Loss:  1.50e-03\n",
      "[Epoch   99/ 100] [Batch    9/   9] Loss:  1.79e-03\n",
      "[Epoch  100/ 100] [Batch    1/   9] Loss:  1.71e-03\n",
      "[Epoch  100/ 100] [Batch    2/   9] Loss:  1.50e-03\n",
      "[Epoch  100/ 100] [Batch    3/   9] Loss:  1.63e-03\n",
      "[Epoch  100/ 100] [Batch    4/   9] Loss:  2.00e-03\n",
      "[Epoch  100/ 100] [Batch    5/   9] Loss:  1.66e-03\n",
      "[Epoch  100/ 100] [Batch    6/   9] Loss:  1.50e-03\n",
      "[Epoch  100/ 100] [Batch    7/   9] Loss:  1.90e-03\n",
      "[Epoch  100/ 100] [Batch    8/   9] Loss:  1.45e-03\n",
      "[Epoch  100/ 100] [Batch    9/   9] Loss:  1.67e-03\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "LinearModel(\n",
       "  (linear): Linear(in_features=1, out_features=1, bias=True)\n",
       ")"
      ]
     },
     "execution_count": 35,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train_hist = {}\n",
    "train_hist['loss'] = []\n",
    "\n",
    "if input_dim == output_dim == 1:\n",
    "    train_hist['weight'] = []\n",
    "    train_hist['bias'] = []\n",
    "\n",
    "# Initialize training\n",
    "model.reset()\n",
    "model.train()\n",
    "\n",
    "for epoch in range(n_epochs):\n",
    "    for idx, batch in enumerate(train_loader):\n",
    "        optimizer.zero_grad()\n",
    "        loss = loss_fun(model.forward(batch[0]),  batch[1])\n",
    "        loss.backward()\n",
    "        optimizer.step()\n",
    "\n",
    "        train_hist['loss'].append(loss.item())\n",
    "        if input_dim == output_dim == 1:\n",
    "            train_hist['weight'].append(model.linear.weight.item())\n",
    "            train_hist['bias'].append(model.linear.bias.item())\n",
    "        \n",
    "        print('[Epoch %4d/%4d] [Batch %4d/%4d] Loss: % 2.2e' % (epoch + 1, n_epochs, \n",
    "                                                                idx + 1, len(train_loader), \n",
    "                                                                loss.item()))\n",
    "        \n",
    "model.eval()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "metadata": {},
   "outputs": [],
   "source": [
    "if input_dim == output_dim == 1:\n",
    "    n_test = 500\n",
    "    X_test = np.random.rand(n_test, input_dim)\n",
    "    y_pred = []\n",
    "\n",
    "    state_dict = model.state_dict()\n",
    "\n",
    "    for idx in range(len(train_hist['weight'])):\n",
    "        state_dict['linear.weight'] = torch.tensor([[train_hist['weight'][idx]]])\n",
    "        state_dict['linear.bias'] = torch.tensor([train_hist['bias'][idx]])\n",
    "        model.load_state_dict(state_dict)\n",
    "\n",
    "        y_pred.append(model.forward(torch.tensor(X_test.astype('f'))).detach().numpy())    "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 1080x360 with 3 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "if input_dim == output_dim == 1:\n",
    "    fig = plt.figure(figsize=(15, 5))\n",
    "    fig.clf()\n",
    "    \n",
    "    ax = fig.add_subplot(1, 3, 1)\n",
    "    levels = np.logspace(np.log(np.min(loss_values)), np.log(np.max(loss_values)), 20)\n",
    "    ax.contourf(ww, bb, loss_values, levels=levels, norm=colors.LogNorm())\n",
    "    ax.plot(train_hist['weight'], train_hist['bias'], '.-b')\n",
    "    ax.plot(A[0], b, 'r*', markersize=10)\n",
    "    ax.set_xlabel('weight')\n",
    "    ax.set_ylabel('bias')\n",
    "    #ax.legend(['optim', '(A, b)'])\n",
    "    ax.grid(True)\n",
    "    ax.set_xlim(-2, 2) \n",
    "    ax.set_ylim(-2, 2) \n",
    "    \n",
    "    ax = fig.add_subplot(1, 3, 2)\n",
    "    ax.loglog(np.abs(train_hist['loss']))\n",
    "    ax.set_xlabel('Iter')\n",
    "    ax.set_ylabel('Loss')\n",
    "    ax.grid(True)\n",
    "    \n",
    "    ax = fig.add_subplot(1, 3, 3)\n",
    "    ax.plot(X_train, y_train, '.')\n",
    "    a=ax.plot(X_test, y_pred[0], '-', alpha=0.1)\n",
    "    for y in y_pred[1:]:\n",
    "        ax.plot(X_test, y, '-', alpha=0.1, color=a[0].get_color())\n",
    "    ax.plot(X_test, y_pred[-1], 'k')\n",
    "    ax.grid(True)   \n",
    "\n",
    "    fig.tight_layout()\n",
    "\n",
    "else:\n",
    "    fig = plt.figure()\n",
    "    fig.clf()\n",
    "    ax = fig.gca()\n",
    "    ax.loglog(np.abs(train_hist['loss']))\n",
    "    ax.set_xlabel('Iter')\n",
    "    ax.set_ylabel('Loss')\n",
    "    ax.grid(True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.9.12"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
